From a3aaece98682da9dd653e3a4591f0f5916602337 Mon Sep 17 00:00:00 2001 From: Luke Schoen Date: Mon, 28 Mar 2022 10:46:48 +0200 Subject: [PATCH 1/2] wip --- CONTRIBUTING.md | 27 ++++++++++++++++++++++++++- Cargo.lock | 2 +- node/Cargo.toml | 2 +- pallets/primitives/Cargo.toml | 2 +- runtime/src/lib.rs | 2 +- scripts/benchmark_all_pallets.sh | 31 +++++++++++++++++++++++++++++++ 6 files changed, 61 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 223b7910..c59bfa03 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -88,7 +88,32 @@ Refer to Susbtrate Debugging documentation [here](https://docs.substrate.io/v3/r ### Run All Tests ```bash -cargo test -p datahighway-parachain-runtime +cargo test -p datahighway-parachain-runtime && +cargo test -p roaming-operators && +cargo test -p roaming-networks && +cargo test -p roaming-organizations && +cargo test -p roaming-network-servers && +cargo test -p roaming-devices && +cargo test -p roaming-routing-profiles && +cargo test -p roaming-service-profiles && +cargo test -p roaming-accounting-policies && +cargo test -p roaming-agreement-policies && +cargo test -p roaming-network-profiles && +cargo test -p roaming-device-profiles && +cargo test -p roaming-sessions && +cargo test -p roaming-billing-policies && +cargo test -p roaming-charging-policies && +cargo test -p roaming-packet-bundles && +cargo test -p mining-setting-token && +cargo test -p mining-setting-hardware && +cargo test -p mining-rates-token && +cargo test -p mining-rates-hardware && +cargo test -p mining-sampling-token && +cargo test -p mining-sampling-hardware && +cargo test -p mining-eligibility-token && +cargo test -p mining-eligibility-hardware && +cargo test -p mining-claims-token && +cargo test -p mining-claims-hardware ``` ### Run Integration Tests Only diff --git a/Cargo.lock b/Cargo.lock index c11100c6..658718ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5007,7 +5007,7 @@ dependencies = [ [[package]] name = "module-primitives" -version = "3.0.6" +version = "3.0.7" dependencies = [ "bitmask", "frame-benchmarking", diff --git a/node/Cargo.toml b/node/Cargo.toml index 16be564b..04636fa0 100755 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -27,7 +27,7 @@ jsonrpc-core = '18.0.0' # Local datahighway-parachain-runtime = { path = '../runtime', version = '3.5.0' } -module-primitives = { version = '3.0.6', default-features = false, path = '../pallets/primitives' } +module-primitives = { version = '3.0.7', default-features = false, path = '../pallets/primitives' } # Substrate frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18' } diff --git a/pallets/primitives/Cargo.toml b/pallets/primitives/Cargo.toml index 2588bd9d..06eefb20 100644 --- a/pallets/primitives/Cargo.toml +++ b/pallets/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = 'module-primitives' -version = '3.0.6' +version = '3.0.7' authors = ['Laminar Developers ', 'MXC Foundation GmbH ', 'Luke Schoen'] edition = '2021' diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 535371af..1143dbfa 100755 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -233,7 +233,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("datahighway-parachain"), impl_name: create_runtime_str!("datahighway-parachain"), authoring_version: 2, - spec_version: 3, + spec_version: 4, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/scripts/benchmark_all_pallets.sh b/scripts/benchmark_all_pallets.sh index 2f96e049..8a5808d2 100755 --- a/scripts/benchmark_all_pallets.sh +++ b/scripts/benchmark_all_pallets.sh @@ -33,6 +33,37 @@ pallets=( "pallet_indices" \ "pallet_transaction_payment" \ "pallet_xcm" \ + "membership_supernodes" \ + "roaming_operators" \ + "roaming_networks" \ + "roaming_organizations" \ + "roaming_network_servers" \ + "roaming_devices" \ + "roaming_routing_profiles" \ + "roaming_service_profiles" \ + "roaming_accounting_policies" \ + "roaming_agreement_policies" \ + "roaming_network_profiles" \ + "roaming_device_profiles" \ + "roaming_sessions" \ + "roaming_billing_policies" \ + "roaming_charging_policies" \ + "roaming_packet_bundles" \ + "mining_setting_token" \ + "mining_setting_hardware" \ + "mining_rates_token" \ + "mining_rates_hardware" \ + "mining_sampling_token" \ + "mining_sampling_hardware" \ + "mining_eligibility_token" \ + "mining_eligibility_hardware" \ + "mining_eligibility_proxy" \ + "mining_lodgements_hardware" \ + "mining_claims_token" \ + "mining_claims_hardware" \ + "mining_execution_token" \ + "exchange_rate" \ + "treasury_dao" \ ) echo building runtime-benchmarking feature... From 9c3c82e91688f5ad156bda07664b879ad5407d7f Mon Sep 17 00:00:00 2001 From: Luke Schoen Date: Mon, 28 Mar 2022 12:52:03 +0200 Subject: [PATCH 2/2] feat: Restore custom pallets for on-chain upgrade --- Cargo.lock | 1004 +++++++++++++++-- Cargo.toml | 35 +- node/Cargo.toml | 6 +- pallets/env/Cargo.toml | 9 + pallets/env/README.md | 3 + pallets/env/src/config.rs | 43 + pallets/env/src/lib.rs | 19 + pallets/exchange-rate/Cargo.toml | 51 + pallets/exchange-rate/src/benchmarking.rs | 12 + pallets/exchange-rate/src/lib.rs | 295 +++++ pallets/exchange-rate/src/mock.rs | 127 +++ pallets/exchange-rate/src/tests.rs | 151 +++ pallets/lockdrop/rpc/Cargo.toml | 26 + pallets/lockdrop/rpc/src/lib.rs | 50 + pallets/lockdrop/runtime-api/Cargo.toml | 20 + pallets/lockdrop/runtime-api/src/lib.rs | 12 + pallets/lockdrop/runtime/Cargo.toml | 15 + pallets/lockdrop/runtime/src/lib.rs | 47 + pallets/membership/supernodes/Cargo.toml | 46 + .../membership/supernodes/src/benchmarking.rs | 12 + pallets/membership/supernodes/src/lib.rs | 149 +++ pallets/membership/supernodes/src/tests.rs | 150 +++ pallets/mining/claims/hardware/Cargo.toml | 59 + .../claims/hardware/src/benchmarking.rs | 12 + pallets/mining/claims/hardware/src/lib.rs | 411 +++++++ pallets/mining/claims/hardware/src/mock.rs | 163 +++ pallets/mining/claims/hardware/src/tests.rs | 6 + pallets/mining/claims/token/Cargo.toml | 59 + .../mining/claims/token/src/benchmarking.rs | 12 + pallets/mining/claims/token/src/lib.rs | 512 +++++++++ pallets/mining/claims/token/src/mock.rs | 158 +++ pallets/mining/claims/token/src/tests.rs | 6 + .../mining/eligibility/hardware/Cargo.toml | 57 + .../eligibility/hardware/src/benchmarking.rs | 12 + .../mining/eligibility/hardware/src/lib.rs | 583 ++++++++++ .../mining/eligibility/hardware/src/mock.rs | 158 +++ .../mining/eligibility/hardware/src/tests.rs | 6 + pallets/mining/eligibility/proxy/Cargo.toml | 58 + .../eligibility/proxy/src/benchmarking.rs | 12 + pallets/mining/eligibility/proxy/src/lib.rs | 920 +++++++++++++++ pallets/mining/eligibility/token/Cargo.toml | 57 + .../eligibility/token/src/benchmarking.rs | 12 + pallets/mining/eligibility/token/src/lib.rs | 581 ++++++++++ pallets/mining/eligibility/token/src/mock.rs | 151 +++ pallets/mining/eligibility/token/src/tests.rs | 6 + pallets/mining/execution/token/Cargo.toml | 58 + .../execution/token/src/benchmarking.rs | 12 + pallets/mining/execution/token/src/lib.rs | 566 ++++++++++ pallets/mining/lodgements/hardware/Cargo.toml | 61 + .../lodgements/hardware/src/benchmarking.rs | 12 + pallets/mining/lodgements/hardware/src/lib.rs | 449 ++++++++ pallets/mining/rates/hardware/Cargo.toml | 51 + .../mining/rates/hardware/src/benchmarking.rs | 12 + pallets/mining/rates/hardware/src/lib.rs | 365 ++++++ pallets/mining/rates/hardware/src/mock.rs | 129 +++ pallets/mining/rates/hardware/src/tests.rs | 6 + pallets/mining/rates/token/Cargo.toml | 51 + .../mining/rates/token/src/benchmarking.rs | 12 + pallets/mining/rates/token/src/lib.rs | 340 ++++++ pallets/mining/rates/token/src/mock.rs | 128 +++ pallets/mining/rates/token/src/tests.rs | 6 + pallets/mining/sampling/hardware/Cargo.toml | 53 + .../sampling/hardware/src/benchmarking.rs | 12 + pallets/mining/sampling/hardware/src/lib.rs | 389 +++++++ pallets/mining/sampling/hardware/src/mock.rs | 139 +++ pallets/mining/sampling/hardware/src/tests.rs | 6 + pallets/mining/sampling/token/Cargo.toml | 53 + .../mining/sampling/token/src/benchmarking.rs | 12 + pallets/mining/sampling/token/src/lib.rs | 386 +++++++ pallets/mining/sampling/token/src/mock.rs | 135 +++ pallets/mining/sampling/token/src/tests.rs | 6 + pallets/mining/setting/hardware/Cargo.toml | 51 + .../setting/hardware/src/benchmarking.rs | 12 + pallets/mining/setting/hardware/src/lib.rs | 352 ++++++ pallets/mining/setting/hardware/src/mock.rs | 131 +++ pallets/mining/setting/hardware/src/tests.rs | 6 + pallets/mining/setting/token/Cargo.toml | 51 + .../mining/setting/token/src/benchmarking.rs | 12 + pallets/mining/setting/token/src/lib.rs | 440 ++++++++ pallets/mining/setting/token/src/mock.rs | 127 +++ pallets/mining/setting/token/src/tests.rs | 6 + pallets/primitives/Cargo.toml | 2 +- .../roaming-accounting-policies/Cargo.toml | 53 + .../src/benchmarking.rs | 12 + .../roaming-accounting-policies/src/lib.rs | 416 +++++++ .../roaming-accounting-policies/src/mock.rs | 129 +++ .../roaming-accounting-policies/src/tests.rs | 84 ++ .../roaming-agreement-policies/Cargo.toml | 56 + .../src/benchmarking.rs | 12 + .../roaming-agreement-policies/src/lib.rs | 489 ++++++++ .../roaming-agreement-policies/src/mock.rs | 135 +++ .../roaming-agreement-policies/src/tests.rs | 84 ++ .../roaming-billing-policies/Cargo.toml | 52 + .../src/benchmarking.rs | 12 + .../roaming-billing-policies/src/lib.rs | 464 ++++++++ .../roaming-billing-policies/src/mock.rs | 126 +++ .../roaming-billing-policies/src/tests.rs | 81 ++ .../roaming-charging-policies/Cargo.toml | 52 + .../src/benchmarking.rs | 12 + .../roaming-charging-policies/src/lib.rs | 477 ++++++++ .../roaming-charging-policies/src/mock.rs | 126 +++ .../roaming-charging-policies/src/tests.rs | 81 ++ .../roaming-device-profiles/Cargo.toml | 58 + .../src/benchmarking.rs | 12 + .../roaming-device-profiles/src/lib.rs | 404 +++++++ .../roaming-device-profiles/src/mock.rs | 142 +++ .../roaming-device-profiles/src/tests.rs | 81 ++ pallets/roaming/roaming-devices/Cargo.toml | 56 + .../roaming-devices/src/benchmarking.rs | 12 + pallets/roaming/roaming-devices/src/lib.rs | 385 +++++++ pallets/roaming/roaming-devices/src/mock.rs | 134 +++ pallets/roaming/roaming-devices/src/tests.rs | 113 ++ .../roaming-network-profiles/Cargo.toml | 58 + .../src/benchmarking.rs | 12 + .../roaming-network-profiles/src/lib.rs | 751 ++++++++++++ .../roaming-network-profiles/src/mock.rs | 138 +++ .../roaming-network-profiles/src/tests.rs | 81 ++ .../roaming-network-servers/Cargo.toml | 52 + .../src/benchmarking.rs | 12 + .../roaming-network-servers/src/lib.rs | 383 +++++++ .../roaming-network-servers/src/mock.rs | 126 +++ .../roaming-network-servers/src/tests.rs | 119 ++ pallets/roaming/roaming-networks/Cargo.toml | 56 + .../roaming-networks/src/benchmarking.rs | 12 + pallets/roaming/roaming-networks/src/lib.rs | 298 +++++ pallets/roaming/roaming-networks/src/mock.rs | 123 ++ pallets/roaming/roaming-networks/src/tests.rs | 119 ++ pallets/roaming/roaming-operators/Cargo.toml | 50 + .../roaming-operators/src/benchmarking.rs | 12 + pallets/roaming/roaming-operators/src/lib.rs | 221 ++++ pallets/roaming/roaming-operators/src/mock.rs | 118 ++ .../roaming/roaming-operators/src/tests.rs | 119 ++ .../roaming/roaming-organizations/Cargo.toml | 54 + .../roaming-organizations/src/benchmarking.rs | 12 + .../roaming/roaming-organizations/src/lib.rs | 313 +++++ .../roaming/roaming-organizations/src/mock.rs | 130 +++ .../roaming-organizations/src/tests.rs | 119 ++ .../roaming/roaming-packet-bundles/Cargo.toml | 60 + .../src/benchmarking.rs | 12 + .../roaming/roaming-packet-bundles/src/lib.rs | 643 +++++++++++ .../roaming-packet-bundles/src/mock.rs | 146 +++ .../roaming-packet-bundles/src/tests.rs | 119 ++ .../roaming-routing-profiles/Cargo.toml | 58 + .../src/benchmarking.rs | 12 + .../roaming-routing-profiles/src/lib.rs | 286 +++++ .../roaming-routing-profiles/src/mock.rs | 139 +++ .../roaming-routing-profiles/src/tests.rs | 81 ++ .../roaming-service-profiles/Cargo.toml | 54 + .../src/benchmarking.rs | 12 + .../roaming-service-profiles/src/lib.rs | 324 ++++++ .../roaming-service-profiles/src/mock.rs | 134 +++ .../roaming-service-profiles/src/tests.rs | 81 ++ pallets/roaming/roaming-sessions/Cargo.toml | 58 + .../roaming-sessions/src/benchmarking.rs | 12 + pallets/roaming/roaming-sessions/src/lib.rs | 493 ++++++++ pallets/roaming/roaming-sessions/src/mock.rs | 138 +++ pallets/roaming/roaming-sessions/src/tests.rs | 81 ++ pallets/treasury/dao/Cargo.toml | 51 + pallets/treasury/dao/src/benchmarking.rs | 12 + pallets/treasury/dao/src/lib.rs | 84 ++ ..._parachain_runtime.compact.compressed.wasm | Bin 0 -> 1094980 bytes ...datahighway_parachain_runtime.compact.wasm | Bin 0 -> 5943412 bytes runtime/Cargo.toml | 97 +- runtime/src/lib.rs | 288 ++++- .../cli_integration_tests_mining_hardware.rs | 406 +++++++ .../cli_integration_tests_mining_tokens.rs | 455 ++++++++ .../tests/cli_integration_tests_roaming.rs | 628 +++++++++++ 167 files changed, 23614 insertions(+), 120 deletions(-) create mode 100644 pallets/env/Cargo.toml create mode 100644 pallets/env/README.md create mode 100644 pallets/env/src/config.rs create mode 100644 pallets/env/src/lib.rs create mode 100755 pallets/exchange-rate/Cargo.toml create mode 100644 pallets/exchange-rate/src/benchmarking.rs create mode 100755 pallets/exchange-rate/src/lib.rs create mode 100644 pallets/exchange-rate/src/mock.rs create mode 100644 pallets/exchange-rate/src/tests.rs create mode 100644 pallets/lockdrop/rpc/Cargo.toml create mode 100644 pallets/lockdrop/rpc/src/lib.rs create mode 100644 pallets/lockdrop/runtime-api/Cargo.toml create mode 100644 pallets/lockdrop/runtime-api/src/lib.rs create mode 100644 pallets/lockdrop/runtime/Cargo.toml create mode 100644 pallets/lockdrop/runtime/src/lib.rs create mode 100644 pallets/membership/supernodes/Cargo.toml create mode 100644 pallets/membership/supernodes/src/benchmarking.rs create mode 100644 pallets/membership/supernodes/src/lib.rs create mode 100644 pallets/membership/supernodes/src/tests.rs create mode 100644 pallets/mining/claims/hardware/Cargo.toml create mode 100644 pallets/mining/claims/hardware/src/benchmarking.rs create mode 100644 pallets/mining/claims/hardware/src/lib.rs create mode 100644 pallets/mining/claims/hardware/src/mock.rs create mode 100644 pallets/mining/claims/hardware/src/tests.rs create mode 100644 pallets/mining/claims/token/Cargo.toml create mode 100644 pallets/mining/claims/token/src/benchmarking.rs create mode 100644 pallets/mining/claims/token/src/lib.rs create mode 100644 pallets/mining/claims/token/src/mock.rs create mode 100644 pallets/mining/claims/token/src/tests.rs create mode 100644 pallets/mining/eligibility/hardware/Cargo.toml create mode 100644 pallets/mining/eligibility/hardware/src/benchmarking.rs create mode 100644 pallets/mining/eligibility/hardware/src/lib.rs create mode 100644 pallets/mining/eligibility/hardware/src/mock.rs create mode 100644 pallets/mining/eligibility/hardware/src/tests.rs create mode 100644 pallets/mining/eligibility/proxy/Cargo.toml create mode 100644 pallets/mining/eligibility/proxy/src/benchmarking.rs create mode 100644 pallets/mining/eligibility/proxy/src/lib.rs create mode 100644 pallets/mining/eligibility/token/Cargo.toml create mode 100644 pallets/mining/eligibility/token/src/benchmarking.rs create mode 100644 pallets/mining/eligibility/token/src/lib.rs create mode 100644 pallets/mining/eligibility/token/src/mock.rs create mode 100644 pallets/mining/eligibility/token/src/tests.rs create mode 100644 pallets/mining/execution/token/Cargo.toml create mode 100644 pallets/mining/execution/token/src/benchmarking.rs create mode 100644 pallets/mining/execution/token/src/lib.rs create mode 100644 pallets/mining/lodgements/hardware/Cargo.toml create mode 100644 pallets/mining/lodgements/hardware/src/benchmarking.rs create mode 100644 pallets/mining/lodgements/hardware/src/lib.rs create mode 100644 pallets/mining/rates/hardware/Cargo.toml create mode 100644 pallets/mining/rates/hardware/src/benchmarking.rs create mode 100644 pallets/mining/rates/hardware/src/lib.rs create mode 100644 pallets/mining/rates/hardware/src/mock.rs create mode 100644 pallets/mining/rates/hardware/src/tests.rs create mode 100644 pallets/mining/rates/token/Cargo.toml create mode 100644 pallets/mining/rates/token/src/benchmarking.rs create mode 100644 pallets/mining/rates/token/src/lib.rs create mode 100644 pallets/mining/rates/token/src/mock.rs create mode 100644 pallets/mining/rates/token/src/tests.rs create mode 100644 pallets/mining/sampling/hardware/Cargo.toml create mode 100644 pallets/mining/sampling/hardware/src/benchmarking.rs create mode 100644 pallets/mining/sampling/hardware/src/lib.rs create mode 100644 pallets/mining/sampling/hardware/src/mock.rs create mode 100644 pallets/mining/sampling/hardware/src/tests.rs create mode 100644 pallets/mining/sampling/token/Cargo.toml create mode 100644 pallets/mining/sampling/token/src/benchmarking.rs create mode 100644 pallets/mining/sampling/token/src/lib.rs create mode 100644 pallets/mining/sampling/token/src/mock.rs create mode 100644 pallets/mining/sampling/token/src/tests.rs create mode 100644 pallets/mining/setting/hardware/Cargo.toml create mode 100644 pallets/mining/setting/hardware/src/benchmarking.rs create mode 100644 pallets/mining/setting/hardware/src/lib.rs create mode 100644 pallets/mining/setting/hardware/src/mock.rs create mode 100644 pallets/mining/setting/hardware/src/tests.rs create mode 100644 pallets/mining/setting/token/Cargo.toml create mode 100644 pallets/mining/setting/token/src/benchmarking.rs create mode 100644 pallets/mining/setting/token/src/lib.rs create mode 100644 pallets/mining/setting/token/src/mock.rs create mode 100644 pallets/mining/setting/token/src/tests.rs create mode 100644 pallets/roaming/roaming-accounting-policies/Cargo.toml create mode 100644 pallets/roaming/roaming-accounting-policies/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-accounting-policies/src/lib.rs create mode 100644 pallets/roaming/roaming-accounting-policies/src/mock.rs create mode 100644 pallets/roaming/roaming-accounting-policies/src/tests.rs create mode 100644 pallets/roaming/roaming-agreement-policies/Cargo.toml create mode 100644 pallets/roaming/roaming-agreement-policies/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-agreement-policies/src/lib.rs create mode 100644 pallets/roaming/roaming-agreement-policies/src/mock.rs create mode 100644 pallets/roaming/roaming-agreement-policies/src/tests.rs create mode 100644 pallets/roaming/roaming-billing-policies/Cargo.toml create mode 100644 pallets/roaming/roaming-billing-policies/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-billing-policies/src/lib.rs create mode 100644 pallets/roaming/roaming-billing-policies/src/mock.rs create mode 100644 pallets/roaming/roaming-billing-policies/src/tests.rs create mode 100644 pallets/roaming/roaming-charging-policies/Cargo.toml create mode 100644 pallets/roaming/roaming-charging-policies/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-charging-policies/src/lib.rs create mode 100644 pallets/roaming/roaming-charging-policies/src/mock.rs create mode 100644 pallets/roaming/roaming-charging-policies/src/tests.rs create mode 100644 pallets/roaming/roaming-device-profiles/Cargo.toml create mode 100644 pallets/roaming/roaming-device-profiles/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-device-profiles/src/lib.rs create mode 100644 pallets/roaming/roaming-device-profiles/src/mock.rs create mode 100644 pallets/roaming/roaming-device-profiles/src/tests.rs create mode 100644 pallets/roaming/roaming-devices/Cargo.toml create mode 100644 pallets/roaming/roaming-devices/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-devices/src/lib.rs create mode 100644 pallets/roaming/roaming-devices/src/mock.rs create mode 100644 pallets/roaming/roaming-devices/src/tests.rs create mode 100644 pallets/roaming/roaming-network-profiles/Cargo.toml create mode 100644 pallets/roaming/roaming-network-profiles/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-network-profiles/src/lib.rs create mode 100644 pallets/roaming/roaming-network-profiles/src/mock.rs create mode 100644 pallets/roaming/roaming-network-profiles/src/tests.rs create mode 100644 pallets/roaming/roaming-network-servers/Cargo.toml create mode 100644 pallets/roaming/roaming-network-servers/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-network-servers/src/lib.rs create mode 100644 pallets/roaming/roaming-network-servers/src/mock.rs create mode 100644 pallets/roaming/roaming-network-servers/src/tests.rs create mode 100644 pallets/roaming/roaming-networks/Cargo.toml create mode 100644 pallets/roaming/roaming-networks/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-networks/src/lib.rs create mode 100644 pallets/roaming/roaming-networks/src/mock.rs create mode 100644 pallets/roaming/roaming-networks/src/tests.rs create mode 100644 pallets/roaming/roaming-operators/Cargo.toml create mode 100644 pallets/roaming/roaming-operators/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-operators/src/lib.rs create mode 100644 pallets/roaming/roaming-operators/src/mock.rs create mode 100644 pallets/roaming/roaming-operators/src/tests.rs create mode 100644 pallets/roaming/roaming-organizations/Cargo.toml create mode 100644 pallets/roaming/roaming-organizations/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-organizations/src/lib.rs create mode 100644 pallets/roaming/roaming-organizations/src/mock.rs create mode 100644 pallets/roaming/roaming-organizations/src/tests.rs create mode 100644 pallets/roaming/roaming-packet-bundles/Cargo.toml create mode 100644 pallets/roaming/roaming-packet-bundles/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-packet-bundles/src/lib.rs create mode 100644 pallets/roaming/roaming-packet-bundles/src/mock.rs create mode 100644 pallets/roaming/roaming-packet-bundles/src/tests.rs create mode 100644 pallets/roaming/roaming-routing-profiles/Cargo.toml create mode 100644 pallets/roaming/roaming-routing-profiles/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-routing-profiles/src/lib.rs create mode 100644 pallets/roaming/roaming-routing-profiles/src/mock.rs create mode 100644 pallets/roaming/roaming-routing-profiles/src/tests.rs create mode 100644 pallets/roaming/roaming-service-profiles/Cargo.toml create mode 100644 pallets/roaming/roaming-service-profiles/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-service-profiles/src/lib.rs create mode 100644 pallets/roaming/roaming-service-profiles/src/mock.rs create mode 100644 pallets/roaming/roaming-service-profiles/src/tests.rs create mode 100644 pallets/roaming/roaming-sessions/Cargo.toml create mode 100644 pallets/roaming/roaming-sessions/src/benchmarking.rs create mode 100644 pallets/roaming/roaming-sessions/src/lib.rs create mode 100644 pallets/roaming/roaming-sessions/src/mock.rs create mode 100644 pallets/roaming/roaming-sessions/src/tests.rs create mode 100644 pallets/treasury/dao/Cargo.toml create mode 100644 pallets/treasury/dao/src/benchmarking.rs create mode 100644 pallets/treasury/dao/src/lib.rs create mode 100644 res/upgrades/3.6.0/datahighway_parachain_runtime.compact.compressed.wasm create mode 100644 res/upgrades/3.6.0/datahighway_parachain_runtime.compact.wasm create mode 100755 runtime/tests/cli_integration_tests_mining_hardware.rs create mode 100755 runtime/tests/cli_integration_tests_mining_tokens.rs create mode 100755 runtime/tests/cli_integration_tests_roaming.rs diff --git a/Cargo.lock b/Cargo.lock index 658718ca..f3c05682 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,6 +12,16 @@ dependencies = [ "regex", ] +[[package]] +name = "account-set" +version = "2.0.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "sp-std", +] + [[package]] name = "addr2line" version = "0.17.0" @@ -1931,7 +1941,7 @@ dependencies = [ [[package]] name = "datahighway-collator" -version = "3.5.0" +version = "3.6.0" dependencies = [ "clap", "cumulus-client-cli", @@ -2003,7 +2013,7 @@ dependencies = [ [[package]] name = "datahighway-parachain-runtime" -version = "3.5.0" +version = "3.6.0" dependencies = [ "chrono", "cumulus-pallet-aura-ext", @@ -2015,6 +2025,7 @@ dependencies = [ "cumulus-primitives-core", "cumulus-primitives-timestamp", "cumulus-primitives-utility", + "exchange-rate", "frame-benchmarking", "frame-executive", "frame-support", @@ -2025,6 +2036,20 @@ dependencies = [ "funty 1.1.0", "hex-literal", "log", + "membership-supernodes", + "mining-claims-hardware", + "mining-claims-token", + "mining-eligibility-hardware", + "mining-eligibility-proxy", + "mining-eligibility-token", + "mining-execution-token", + "mining-lodgements-hardware", + "mining-rates-hardware", + "mining-rates-token", + "mining-sampling-hardware", + "mining-sampling-token", + "mining-setting-hardware", + "mining-setting-token", "module-primitives", "pallet-asset-tx-payment", "pallet-assets", @@ -2061,6 +2086,21 @@ dependencies = [ "parity-scale-codec", "polkadot-parachain", "polkadot-runtime-common", + "roaming-accounting-policies", + "roaming-agreement-policies", + "roaming-billing-policies", + "roaming-charging-policies", + "roaming-device-profiles", + "roaming-devices", + "roaming-network-profiles", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "roaming-packet-bundles", + "roaming-routing-profiles", + "roaming-service-profiles", + "roaming-sessions", "scale-info", "serde", "smallvec", @@ -2078,6 +2118,7 @@ dependencies = [ "sp-version", "static_assertions", "substrate-wasm-builder", + "treasury-dao", "try-runtime-cli", "xcm", "xcm-builder", @@ -2383,6 +2424,28 @@ version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" +[[package]] +name = "exchange-rate" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "exit-future" version = "0.2.0" @@ -4829,6 +4892,23 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "membership-supernodes" +version = "2.0.0" +dependencies = [ + "account-set", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "memchr" version = "2.4.1" @@ -4930,90 +5010,178 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +name = "mining-claims-hardware" +version = "0.1.0" dependencies = [ - "adler", - "autocfg", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "mining-eligibility-hardware", + "mining-rates-hardware", + "mining-sampling-hardware", + "mining-setting-hardware", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +name = "mining-claims-token" +version = "0.1.0" dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "miow 0.2.2", - "net2", - "slab", - "winapi 0.2.8", + "mining-eligibility-token", + "mining-rates-token", + "mining-sampling-token", + "mining-setting-token", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "mio" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +name = "mining-eligibility-hardware" +version = "0.1.0" dependencies = [ - "libc", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "miow 0.3.7", - "ntapi", - "wasi 0.11.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "mining-rates-hardware", + "mining-sampling-hardware", + "mining-setting-hardware", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +name = "mining-eligibility-proxy" +version = "3.0.6" dependencies = [ - "lazycell", + "account-set", + "chrono", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "mio 0.6.23", - "slab", + "membership-supernodes", + "module-primitives", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "parity-scale-codec", + "safe-mix", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +name = "mining-eligibility-token" +version = "0.1.0" dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "mining-rates-token", + "mining-sampling-token", + "mining-setting-token", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +name = "mining-execution-token" +version = "0.1.0" dependencies = [ - "winapi 0.3.9", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "mining-claims-token", + "mining-eligibility-token", + "mining-rates-token", + "mining-sampling-token", + "mining-setting-token", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "module-primitives" -version = "3.0.7" +name = "mining-lodgements-hardware" +version = "0.1.0" dependencies = [ - "bitmask", "frame-benchmarking", "frame-support", "frame-system", + "log", + "mining-claims-hardware", + "mining-eligibility-hardware", + "mining-rates-hardware", + "mining-sampling-hardware", + "mining-setting-hardware", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", "parity-scale-codec", + "roaming-operators", + "safe-mix", "scale-info", "serde", "sp-core", @@ -5023,45 +5191,272 @@ dependencies = [ ] [[package]] -name = "more-asserts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" - -[[package]] -name = "multiaddr" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +name = "mining-rates-hardware" +version = "0.1.0" dependencies = [ - "arrayref", - "bs58", - "byteorder", - "data-encoding", - "multihash 0.14.0", - "percent-encoding 2.1.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", "serde", - "static_assertions", - "unsigned-varint 0.7.1", - "url 2.2.2", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "multibase" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2" +name = "mining-rates-token" +version = "0.1.0" dependencies = [ - "base-x", - "data-encoding", - "data-encoding-macro", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "multihash" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cab" +name = "mining-sampling-hardware" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "mining-setting-hardware", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "mining-sampling-token" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "mining-setting-token", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "mining-setting-hardware" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "mining-setting-token" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow 0.2.2", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +dependencies = [ + "libc", + "log", + "miow 0.3.7", + "ntapi", + "wasi 0.11.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio 0.6.23", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "module-primitives" +version = "3.0.6" +dependencies = [ + "bitmask", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "more-asserts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "multiaddr" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +dependencies = [ + "arrayref", + "bs58", + "byteorder", + "data-encoding", + "multihash 0.14.0", + "percent-encoding 2.1.0", + "serde", + "static_assertions", + "unsigned-varint 0.7.1", + "url 2.2.2", +] + +[[package]] +name = "multibase" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2" +dependencies = [ + "base-x", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "multihash" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cab" dependencies = [ "blake2b_simd", "blake2s_simd", @@ -8330,44 +8725,406 @@ dependencies = [ ] [[package]] -name = "rocksdb" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620f4129485ff1a7128d184bc687470c21c7951b64779ebc9cfdad3dcd920290" +name = "roaming-accounting-policies" +version = "1.0.0" dependencies = [ - "libc", - "librocksdb-sys", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "rococo-runtime" -version = "0.9.18" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.18#ef71ed8baef3007b039cdf040d24f5958edb390b" +name = "roaming-agreement-policies" +version = "1.0.0" dependencies = [ - "beefy-primitives", - "bp-messages", - "bp-rococo", - "bp-runtime", - "bp-wococo", - "bridge-runtime-common", "frame-benchmarking", - "frame-executive", "frame-support", "frame-system", - "frame-system-rpc-runtime-api", - "hex-literal", "log", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", "pallet-balances", - "pallet-beefy", - "pallet-beefy-mmr", - "pallet-bridge-dispatch", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-collective", - "pallet-grandpa", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-accounting-policies", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-billing-policies" +version = "1.0.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-charging-policies" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-device-profiles" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-devices", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-devices" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-network-profiles" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-devices", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-network-servers" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-networks" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-operators" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-organizations" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-packet-bundles" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-devices", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "roaming-sessions", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-routing-profiles" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-devices", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-service-profiles" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "roaming-sessions" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "parity-scale-codec", + "roaming-devices", + "roaming-network-servers", + "roaming-networks", + "roaming-operators", + "roaming-organizations", + "safe-mix", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "rocksdb" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620f4129485ff1a7128d184bc687470c21c7951b64779ebc9cfdad3dcd920290" +dependencies = [ + "libc", + "librocksdb-sys", +] + +[[package]] +name = "rococo-runtime" +version = "0.9.18" +source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.18#ef71ed8baef3007b039cdf040d24f5958edb390b" +dependencies = [ + "beefy-primitives", + "bp-messages", + "bp-rococo", + "bp-runtime", + "bp-wococo", + "bridge-runtime-common", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "hex-literal", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", + "pallet-bridge-dispatch", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-collective", + "pallet-grandpa", "pallet-im-online", "pallet-indices", "pallet-membership", @@ -11274,6 +12031,29 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "treasury-dao" +version = "0.1.0" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal", + "log", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-transaction-payment", + "pallet-treasury", + "parity-scale-codec", + "roaming-operators", + "safe-mix", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "trie-db" version = "0.23.1" diff --git a/Cargo.toml b/Cargo.toml index 188c6fd1..b75434f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,39 @@ panic = 'unwind' [workspace] members = [ 'node', - 'pallets/*', + # 'pallets/env', + # 'pallets/exchange-rate', + # 'pallets/lockdrop', + 'pallets/roaming/roaming-operators', + 'pallets/roaming/roaming-networks', + 'pallets/roaming/roaming-organizations', + 'pallets/roaming/roaming-network-servers', + 'pallets/roaming/roaming-devices', + 'pallets/roaming/roaming-routing-profiles', + 'pallets/roaming/roaming-service-profiles', + 'pallets/roaming/roaming-accounting-policies', + 'pallets/roaming/roaming-agreement-policies', + 'pallets/roaming/roaming-network-profiles', + 'pallets/roaming/roaming-device-profiles', + 'pallets/roaming/roaming-sessions', + 'pallets/roaming/roaming-billing-policies', + 'pallets/roaming/roaming-charging-policies', + 'pallets/roaming/roaming-packet-bundles', + 'pallets/membership/supernodes', + 'pallets/mining/setting/token', + 'pallets/mining/setting/hardware', + 'pallets/mining/rates/token', + 'pallets/mining/rates/hardware', + 'pallets/mining/sampling/token', + 'pallets/mining/sampling/hardware', + 'pallets/mining/eligibility/token', + 'pallets/mining/eligibility/hardware', + 'pallets/mining/eligibility/proxy', + 'pallets/mining/execution/token', + 'pallets/mining/lodgements/hardware', + 'pallets/mining/claims/token', + 'pallets/mining/claims/hardware', + 'pallets/primitives', + 'pallets/treasury/dao', 'runtime', ] diff --git a/node/Cargo.toml b/node/Cargo.toml index 04636fa0..bc849f8e 100755 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = 'datahighway-collator' -version = '3.5.0' +version = '3.6.0' authors = ['Anonymous'] description = 'DataHighway parachain collator FRAME-based Substrate Node based upon the Cumulus.' license = 'Unlicense' @@ -26,8 +26,8 @@ hex-literal = '0.3.4' jsonrpc-core = '18.0.0' # Local -datahighway-parachain-runtime = { path = '../runtime', version = '3.5.0' } -module-primitives = { version = '3.0.7', default-features = false, path = '../pallets/primitives' } +datahighway-parachain-runtime = { path = '../runtime', version = '3.6.0' } +module-primitives = { version = '3.0.6', default-features = false, path = '../pallets/primitives' } # Substrate frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18' } diff --git a/pallets/env/Cargo.toml b/pallets/env/Cargo.toml new file mode 100644 index 00000000..b138c9cd --- /dev/null +++ b/pallets/env/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = 'env' +version = '0.1.0' +authors = ['Luke Schoen'] +description = 'Config for the environment (e.g. for testing or development).' + +[dependencies] +log = { version = '0.4.1', features = ['max_level_debug', 'release_max_level_warn'] } +error-chain = '0.11.0' diff --git a/pallets/env/README.md b/pallets/env/README.md new file mode 100644 index 00000000..c292852a --- /dev/null +++ b/pallets/env/README.md @@ -0,0 +1,3 @@ +# env + +> Gets the value of the `RUST_ENV` variable, sets it to 1 when running with `cargo test`, otherwise sets it to 0, and checks if running with `cargo test`. diff --git a/pallets/env/src/config.rs b/pallets/env/src/config.rs new file mode 100644 index 00000000..c534b19c --- /dev/null +++ b/pallets/env/src/config.rs @@ -0,0 +1,43 @@ +extern crate error_chain; + +//use errors; +use std::env; + +pub fn get_env() -> String { + let key = "RUST_ENV"; + match env::var(key) { + Ok(val) => { + debug!("Found environment variable key {}: {:?}", key, val); + val.to_string() + }, + Err(e) => { + error!("Error interpreting environment variable key {}: {}", key, e); + "".to_string() + }, + } +} + +pub fn set_test_env() { + // Set the environment variable key `TEST` to value of "1" + // when `cargo test` has been run, otherwise set it to "0" + let key = "RUST_ENV"; + let value_test = "TEST"; + let value_development = "DEVELOPMENT"; + if let Some(arg0) = env::args().nth(0) { + if arg0 == "target/debug/datahighway" { + env::set_var(key, value_development); + assert_eq!(env::var(key), Ok(value_development.to_string())); + } else { + env::set_var(key, value_test); + assert_eq!(env::var(key), Ok(value_test.to_string())); + } + } +} + +pub fn is_running_with_cargo_test() -> bool { + if get_env() == "TEST" { + true + } else { + false + } +} diff --git a/pallets/env/src/lib.rs b/pallets/env/src/lib.rs new file mode 100644 index 00000000..8e55e70a --- /dev/null +++ b/pallets/env/src/lib.rs @@ -0,0 +1,19 @@ +// https://github.com/rust-lang-nursery/error-chain/issues/245 +// https://github.com/Drops-of-Diamond/diamond_drops/issues/86 +#![allow(renamed_and_removed_lints)] +#![allow(unused_doc_comment)] + +#[macro_use] +extern crate error_chain; + +#[macro_use] +extern crate log; + +pub mod config; + +pub mod errors { + // Create the Error, ErrorKind, ResultExt, and Result types + error_chain!{} +} + +pub use errors::*; diff --git a/pallets/exchange-rate/Cargo.toml b/pallets/exchange-rate/Cargo.toml new file mode 100755 index 00000000..18596ada --- /dev/null +++ b/pallets/exchange-rate/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = 'exchange-rate' +version = '0.1.0' +authors = ['Ilya Beregovskiy'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'safe-mix/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming/roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/exchange-rate/src/benchmarking.rs b/pallets/exchange-rate/src/benchmarking.rs new file mode 100644 index 00000000..93e001e3 --- /dev/null +++ b/pallets/exchange-rate/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as ExchangeRate; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(ExchangeRate, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/exchange-rate/src/lib.rs b/pallets/exchange-rate/src/lib.rs new file mode 100755 index 00000000..c49e17bd --- /dev/null +++ b/pallets/exchange-rate/src/lib.rs @@ -0,0 +1,295 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct ExchangeRate(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct ExchangeRateSetting { + pub hbtc: H, + pub dot: D, + pub iota: I, + pub fil: F, + pub decimals_after_point: P, +} + +pub trait Config: frame_system::Config + roaming_operators::Config { + type Event: From> + Into<::Event>; + type ExchangeRateIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type HBTCRate: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type DOTRate: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type IOTARate: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type FILRate: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type DecimalsAfterPoint: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +decl_event!( + pub enum Event where + ::AccountId, + ::ExchangeRateIndex, + ::HBTCRate, + ::DOTRate, + ::IOTARate, + ::FILRate, + ::DecimalsAfterPoint, + { + /// A exchange_rate is created. (owner, exchange_rate_index) + Created(AccountId, ExchangeRateIndex), + /// A exchange_rate is transferred. (from, to, exchange_rate_index) + Transferred(AccountId, AccountId, ExchangeRateIndex), + ConfigSet( + AccountId, ExchangeRateIndex, HBTCRate, + DOTRate, IOTARate, + FILRate, DecimalsAfterPoint + ), + } +); + +decl_storage! { + trait Store for Module as ExchangeRate { + pub ExchangeRates get(fn exchange_rates): map hasher(opaque_blake2_256) T::ExchangeRateIndex => Option; + pub ExchangeRateOwners get(fn exchange_rate_owner): map hasher(opaque_blake2_256) T::ExchangeRateIndex => Option; + pub ExchangeRateCount get(fn exchange_rate_count): T::ExchangeRateIndex; + pub ExchangeRateSettings get(fn exchange_rate_settings): map hasher(opaque_blake2_256) T::ExchangeRateIndex => + Option>; + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + #[weight = 10_000 + T::DbWeight::get().writes(3)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let exchange_rate_id = Self::next_exchange_rate_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + let exchange_rate = ExchangeRate(unique_id); + + >::insert( + exchange_rate_id, + exchange_rate, + ); + >::put(exchange_rate_id + One::one()); + >::insert(exchange_rate_id, &sender.clone()); + + Self::deposit_event(RawEvent::Created(sender, exchange_rate_id)); + } + + /// Transfer a exchange_rate to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, exchange_rate_id: T::ExchangeRateIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::exchange_rate_owner(exchange_rate_id) == Some(sender.clone()), "Only owner can transfer exchange_rate"); + + Self::update_owner(&to, exchange_rate_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, exchange_rate_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_config( + origin, + exchange_rate_id: T::ExchangeRateIndex, + hbtc_rate: Option, + dot_rate: Option, + iota_rate: Option, + fil_rate: Option, + decimals_after_point: Option + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the exchange_rate_id whose config we want to change actually exists + let is_exchange_rate = Self::exists_exchange_rates(exchange_rate_id).is_ok(); + ensure!(is_exchange_rate, "ExchangeRates does not exist"); + + // Ensure that the caller is owner of the exchange_rate they are trying to change + ensure!(Self::exchange_rate_owner(exchange_rate_id) == Some(sender.clone()), "Only owner can set exchange_rate_setting"); + + let out_hbtc_rate = match hbtc_rate.clone() { + Some(value) => value, + None => 200000u32.into() // Default + }; + + let out_dot_rate = match dot_rate.clone() { + Some(value) => value, + None => 100u32.into() // Default + }; + + let out_iota_rate = match iota_rate.clone() { + Some(value) => value, + None => 5u32.into() // Default + }; + + let out_fil_rate = match fil_rate.clone() { + Some(value) => value, + None => 200u32.into() // Default + }; + + let out_decimals_after_point = match decimals_after_point.clone() { + Some(value) => value, + None => 2u32.into() // Default + }; + + // Check if a exchange_rate_setting already exists with the given exchange_rate_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_exchange_rates_index(exchange_rate_id).is_ok() { + info!("Mutating values"); + >::mutate(exchange_rate_id, |exchange_rate_setting| { + if let Some(_exchange_rate_setting) = exchange_rate_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _exchange_rate_setting.hbtc = out_hbtc_rate.clone(); + _exchange_rate_setting.dot = out_dot_rate.clone(); + _exchange_rate_setting.iota = out_iota_rate.clone(); + _exchange_rate_setting.fil = out_fil_rate.clone(); + _exchange_rate_setting.decimals_after_point = out_decimals_after_point.clone(); + } + }); + info!("Checking mutated values"); + let fetched_exchange_rate_setting = >::get(exchange_rate_id); + if let Some(_exchange_rate_setting) = fetched_exchange_rate_setting { + info!("Latest field hbtc {:#?}", _exchange_rate_setting.hbtc); + info!("Latest field dot {:#?}", _exchange_rate_setting.dot); + info!("Latest field iota {:#?}", _exchange_rate_setting.iota); + info!("Latest field fil {:#?}", _exchange_rate_setting.fil); + info!("Latest field decimals_after_point {:#?}", _exchange_rate_setting.decimals_after_point); + } + } else { + info!("Inserting values"); + + // Create a new mining exchange_rate_setting instance with the input params + let exchange_rate_setting = ExchangeRateSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hbtc: out_hbtc_rate.clone(), + dot: out_dot_rate.clone(), + iota: out_iota_rate.clone(), + fil: out_fil_rate.clone(), + decimals_after_point: out_decimals_after_point.clone(), + }; + + >::insert( + exchange_rate_id, + &exchange_rate_setting + ); + + info!("Checking inserted values"); + let fetched_exchange_rate_setting = >::get(exchange_rate_id); + if let Some(_exchange_rate_setting) = fetched_exchange_rate_setting { + info!("Latest field hbtc {:#?}", _exchange_rate_setting.hbtc); + info!("Latest field dot {:#?}", _exchange_rate_setting.dot); + info!("Latest field iota {:#?}", _exchange_rate_setting.iota); + info!("Latest field fil {:#?}", _exchange_rate_setting.fil); + info!("Latest field decimals_after_point {:#?}", _exchange_rate_setting.decimals_after_point); + } + } + + Self::deposit_event(RawEvent::ConfigSet( + sender, + exchange_rate_id, + out_hbtc_rate, + out_dot_rate, + out_iota_rate, + out_fil_rate, + out_decimals_after_point, + )); + } + } +} + +impl Module { + pub fn is_exchange_rate_owner( + exchange_rate_id: T::ExchangeRateIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::exchange_rate_owner(&exchange_rate_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of ExchangeRate" + ); + Ok(()) + } + + pub fn exists_exchange_rates(exchange_rate_id: T::ExchangeRateIndex) -> Result { + match Self::exchange_rates(exchange_rate_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("ExchangeRates does not exist")), + } + } + + pub fn has_value_for_exchange_rates_index(exchange_rate_id: T::ExchangeRateIndex) -> Result<(), DispatchError> { + info!("Checking if exchange_rate_setting has a value that is defined"); + let fetched_exchange_rate_setting = >::get(exchange_rate_id); + if let Some(_value) = fetched_exchange_rate_setting { + info!("Found value for exchange_rate_setting"); + return Ok(()); + } + warn!("No value for exchange_rate_setting"); + Err(DispatchError::Other("No value for exchange_rate_setting")) + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_exchange_rate_id() -> Result { + let exchange_rate_id = Self::exchange_rate_count(); + if exchange_rate_id == ::max_value() { + return Err(DispatchError::Other("ExchangeRate count overflow")); + } + Ok(exchange_rate_id) + } + + fn update_owner(to: &T::AccountId, exchange_rate_id: T::ExchangeRateIndex) { + >::insert(exchange_rate_id, to); + } +} diff --git a/pallets/exchange-rate/src/mock.rs b/pallets/exchange-rate/src/mock.rs new file mode 100644 index 00000000..ff78ebe5 --- /dev/null +++ b/pallets/exchange-rate/src/mock.rs @@ -0,0 +1,127 @@ +// Creating mock runtime here + +use crate::{ + Module, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl Config for Test { + type DOTRate = u64; + type DecimalsAfterPoint = u32; + type Event = (); + type ExchangeRateIndex = u64; + type FILRate = u64; + type HBTCRate = u64; + type IOTARate = u64; +} + +pub type ExchangeRateTestModule = Module; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/exchange-rate/src/tests.rs b/pallets/exchange-rate/src/tests.rs new file mode 100644 index 00000000..e851ac0b --- /dev/null +++ b/pallets/exchange-rate/src/tests.rs @@ -0,0 +1,151 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert!(ExchangeRateTestModule::exchange_rates(0).is_none()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), None); + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 0); + assert!(ExchangeRateTestModule::exchange_rate_settings(0).is_none()); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(ExchangeRateTestModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 1); + assert!(ExchangeRateTestModule::exchange_rates(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(ExchangeRateTestModule::create(Origin::signed(1)), "ExchangeRate count overflow"); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), u64::max_value()); + assert!(ExchangeRateTestModule::exchange_rates(0).is_none()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(ExchangeRateTestModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(ExchangeRateTestModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 1); + assert!(ExchangeRateTestModule::exchange_rates(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(ExchangeRateTestModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + ExchangeRateTestModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer exchange_rate" + ); + assert_noop!( + ExchangeRateTestModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer exchange_rate" + ); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 1); + assert!(ExchangeRateTestModule::exchange_rates(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), Some(1)); + }); +} + +#[test] +fn set_config_defaults_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(ExchangeRateTestModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(ExchangeRateTestModule::set_config(Origin::signed(1), 0, None, None, None, None, None)); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 1); + assert!(ExchangeRateTestModule::exchange_rates(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), Some(1)); + + assert!(ExchangeRateTestModule::exchange_rate_settings(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().hbtc, 200000); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().dot, 100); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().iota, 5); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().fil, 200); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().decimals_after_point, 2); + }); +} + +#[test] +fn set_config_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(ExchangeRateTestModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(ExchangeRateTestModule::set_config( + Origin::signed(1), + 0, + Some(777), + Some(778), + None, + Some(779), + Some(3) + )); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 1); + assert!(ExchangeRateTestModule::exchange_rates(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), Some(1)); + + assert!(ExchangeRateTestModule::exchange_rate_settings(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().hbtc, 777); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().dot, 778); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().iota, 5); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().fil, 779); + assert_eq!(ExchangeRateTestModule::exchange_rate_settings(0).unwrap().decimals_after_point, 3); + }); +} + +#[test] +fn set_config_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(ExchangeRateTestModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + ExchangeRateTestModule::set_config(Origin::signed(1), 1, None, None, None, None, None), + "ExchangeRates does not exist" + ); + assert_noop!( + ExchangeRateTestModule::set_config(Origin::signed(2), 0, None, None, None, None, None), + "Only owner can set exchange_rate_setting" + ); + // Verify Storage + assert_eq!(ExchangeRateTestModule::exchange_rate_count(), 1); + assert!(ExchangeRateTestModule::exchange_rates(0).is_some()); + assert_eq!(ExchangeRateTestModule::exchange_rate_owner(0), Some(1)); + }); +} diff --git a/pallets/lockdrop/rpc/Cargo.toml b/pallets/lockdrop/rpc/Cargo.toml new file mode 100644 index 00000000..c12ecfb0 --- /dev/null +++ b/pallets/lockdrop/rpc/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = 'lockdrop-rpc' +version = '0.1.0' +authors = ['Ilya Beregovskiy'] +edition = '2021' + +[dependencies] +web3 = '0.13.0' +codec = { version = '2.0.0', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '1.0', default-features = false, features = ['derive'] } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } + +log = { version = '0.4.8' } +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/lockdrop/rpc/src/lib.rs b/pallets/lockdrop/rpc/src/lib.rs new file mode 100644 index 00000000..2f58a454 --- /dev/null +++ b/pallets/lockdrop/rpc/src/lib.rs @@ -0,0 +1,50 @@ +#[rpc] +pub trait LockdropApi { + #[rpc(name = "Lockdrop_deployContract")] + fn deploy_contract( + &self, + at: Option + ) -> Result<()>; +} + +/// A struct that implements the `LockdropApi`. +pub struct Lockdrop { + client: Arc, + _marker: std::marker::PhantomData, +} + +impl Lockdrop { + /// Create new `Lockdrop` instance with the given reference to the client. + pub fn new(client: Arc) -> Self { + Self { client, _marker: Default::default() } + } +} + +impl SumStorageApi<::Hash> + for SumStorage +where + Block: BlockT, + C: Send + Sync + 'static, + C: ProvideRuntimeApi, + C: HeaderBackend, + C::Api: SumStorageRuntimeApi, +{ + fn deploy_contract( + &self, + at: Option<::Hash> + ) -> Result { + + let api = self.client.runtime_api(); + let at = BlockId::hash(at.unwrap_or_else(|| + // If the block hash is not supplied assume the best block. + self.client.info().best_hash + )); + + let runtime_api_result = api.deploy_contract(&at); + runtime_api_result.map_err(|e| RpcError { + code: ErrorCode::ServerError(9876), // No real reason for this value + message: "Something wrong".into(), + data: Some(format!("{:?}", e).into()), + }) + } +} diff --git a/pallets/lockdrop/runtime-api/Cargo.toml b/pallets/lockdrop/runtime-api/Cargo.toml new file mode 100644 index 00000000..0f6e2080 --- /dev/null +++ b/pallets/lockdrop/runtime-api/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = 'lockdrop-runtime-api' +version = '0.1.0' +authors = ['Ilya Beregovskiy'] +edition = '2021' + +[dependencies] +# Substrate +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +sp-api = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false} + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'sp-api/std', +] diff --git a/pallets/lockdrop/runtime-api/src/lib.rs b/pallets/lockdrop/runtime-api/src/lib.rs new file mode 100644 index 00000000..f3d404bd --- /dev/null +++ b/pallets/lockdrop/runtime-api/src/lib.rs @@ -0,0 +1,12 @@ +#![cfg_attr(not(feature = "std"), no_std)] +#![allow(clippy::too_many_arguments)] +#![allow(clippy::unnecessary_mut_passed)] + +// Here we declare the runtime API. It is implemented it the `impl` block in +// runtime amalgamator file (the `runtime/src/lib.rs`) +sp_api::decl_runtime_apis! { + pub trait LockdropApi { + fn deploy_contract() -> Result; + fn test() -> u32; + } +} diff --git a/pallets/lockdrop/runtime/Cargo.toml b/pallets/lockdrop/runtime/Cargo.toml new file mode 100644 index 00000000..cd12a96d --- /dev/null +++ b/pallets/lockdrop/runtime/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = 'lockdrop' +version = '0.1.0' +authors = ['Ilya Beregovskiy'] +edition = '2021' + +[dependencies] +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.17', default-features = false } + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'sp-std/std', +] diff --git a/pallets/lockdrop/runtime/src/lib.rs b/pallets/lockdrop/runtime/src/lib.rs new file mode 100644 index 00000000..f952a72c --- /dev/null +++ b/pallets/lockdrop/runtime/src/lib.rs @@ -0,0 +1,47 @@ +use system::ensure_signed; +use web3::contract::{Contract, Options}; +use web3::types::{Address, U256}; +use std::time::{SystemTime, UNIX_EPOCH}; +use hex::ToHex; + +decl_storage! { + trait Store for Module as LockdropModule { + // Just a dummy storage item. + // Here we are declaring a StorageValue, `Something` as a Option + // `get(something)` is the default getter which returns either the stored `u32` or `None` if nothing stored + LockdropContract get(something): Option; + } +} + +impl Module { + async pub fn deploy_contract() { + let http = web3::transports::Http::new("https://ropsten.infura.io/v3/f201248703994ac2a1f6e6782aedda7a")?; + let web3 = web3::Web3::new(http); + + let start = SystemTime::now(); + let since_the_epoch = start + .duration_since(UNIX_EPOCH) + .expect("Time went backwards"); + + let my_account: Address = "0066B0267Bf7003F5Bc20d8b938005d3E0aeae21".parse().unwrap(); + let bytecode = include_str!("./res/contract_token.code"); + let contract = Contract::deploy(web3.eth(), include_bytes!("../src/contract/res/token.json"))? + .confirmations(0) + .options(Options::with(|opt| { + opt.value = Some(5u32.into()); + opt.gas_price = Some(5u32.into()); + opt.gas = Some(3_000_000u32.into()); + })) + .execute( + bytecode, + (since_the_epoch.as_secs();), + my_account, + ) + .await?; + + let contract_address_bytes = contract.address().as_bytes(); + let mut s = String::with_capacity(2 * contract_address_bytes.len()); + contract_address_bytes.write_hex(&mut s).expect("Failed to write"); + LockdropContract::put(s); + } +} diff --git a/pallets/membership/supernodes/Cargo.toml b/pallets/membership/supernodes/Cargo.toml new file mode 100644 index 00000000..7e62edcc --- /dev/null +++ b/pallets/membership/supernodes/Cargo.toml @@ -0,0 +1,46 @@ +[package] +name = 'membership-supernodes' +version = '2.0.0' +edition = '2021' +repository = 'https://github.com/substrate-developer-hub/recipes' +authors = ['Substrate DevHub '] +description = 'Fork of Substrate Recipe pallet vec-set. A pallet that implements a storage Set on top of a Vec' +license = 'GPL-3.0-or-later' + +[package.metadata.substrate] +categories = [ + 'pallet', + 'tutorial', + 'recipe', +] +compatibility_version = '2.0.0' + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +account-set = { path = '../../../traits/account-set', default-features = false } + +[dev-dependencies] +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'account-set/std', + 'codec/std', + 'scale-info/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'sp-runtime/std', +] +try-runtime = ['frame-support/try-runtime'] diff --git a/pallets/membership/supernodes/src/benchmarking.rs b/pallets/membership/supernodes/src/benchmarking.rs new file mode 100644 index 00000000..dc05435a --- /dev/null +++ b/pallets/membership/supernodes/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MembershipSupernodes; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MembershipSupernodes, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/membership/supernodes/src/lib.rs b/pallets/membership/supernodes/src/lib.rs new file mode 100644 index 00000000..c5e9b207 --- /dev/null +++ b/pallets/membership/supernodes/src/lib.rs @@ -0,0 +1,149 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +//! A pallet that implements a storage set on top of a sorted vec and demonstrates performance +//! tradeoffs when using map sets. + +use account_set::AccountSet; +use frame_support::{ + decl_error, + decl_event, + decl_module, + decl_storage, + dispatch::DispatchResult, + ensure, + traits::{ + Get, + }, +}; +use frame_system::{ + self as system, + ensure_root, +}; +use sp_std::{ + collections::btree_set::BTreeSet, + prelude::*, +}; + +// #[cfg(test)] +// mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// A maximum number of members. When membership reaches this number, no new members may join. +pub const MAX_MEMBERS: usize = 16; + +pub trait Config: system::Config { + type Event: From> + Into<::Event>; +} + +decl_storage! { + trait Store for Module as VecSet { + // The set of all members. Stored as a single vec + Members get(fn members): Vec; + + MemberKinds get(fn member_kinds): + map hasher(opaque_blake2_256) T::AccountId => u32; + } +} + +decl_event!( + pub enum Event + where + AccountId = ::AccountId, + { + /// Added a member + MemberAdded(AccountId, u32), + /// Removed a member + MemberRemoved(AccountId, u32), + } +); + +decl_error! { + pub enum Error for Module { + /// Cannot join as a member because you are already a member + AlreadyMember, + /// Cannot give up membership because you are not currently a member + NotMember, + /// Cannot add another member because the limit is already reached + MembershipLimitReached, + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + type Error = Error; + + /// Adds a member to the membership set unless the max is reached + #[weight = 10_000 + T::DbWeight::get().writes(2)] + pub fn add_member( + origin, + new_member: T::AccountId, + kind: u32, + ) -> DispatchResult { + let _sender = ensure_root(origin)?; + + let mut members = Members::::get(); + ensure!(members.len() < MAX_MEMBERS, Error::::MembershipLimitReached); + + // We don't want to add duplicate members, so we check whether the potential new + // member is already present in the list. Because the list is always ordered, we can + // leverage the binary search which makes this check O(log n). + match members.binary_search(&new_member) { + // If the search succeeds, the caller is already a member, so just return + Ok(_) => Err(Error::::AlreadyMember.into()), + // If the search fails, the caller is not a member and we learned the index where + // they should be inserted + Err(index) => { + members.insert(index, new_member.clone()); + Members::::put(members); + >::insert(new_member.clone(), kind.clone()); + Self::deposit_event(RawEvent::MemberAdded(new_member, kind)); + Ok(()) + } + } + } + + /// Removes a member. + #[weight = 10_000 + T::DbWeight::get().writes(2)] + pub fn remove_member( + origin, + old_member: T::AccountId, + kind: u32, + ) -> DispatchResult { + let _sender = ensure_root(origin)?; + + let mut members = Members::::get(); + + // We have to find out if the member exists in the sorted vec, and, if so, where. + match members.binary_search(&old_member) { + // If the search succeeds, the caller is a member, so remove her + Ok(index) => { + members.remove(index); + Members::::put(members); + >::remove(old_member.clone()); + Self::deposit_event(RawEvent::MemberRemoved(old_member, kind)); + Ok(()) + }, + // If the search fails, the caller is not a member, so just return + Err(_) => Err(Error::::NotMember.into()), + } + } + + // also see `append_or_insert`, `append_or_put` in pallet-elections/phragmen, democracy + } +} + +impl AccountSet for Module { + type AccountId = T::AccountId; + + fn accounts() -> BTreeSet { + Self::members().into_iter().collect::>() + } + + fn account_kind(account_id: T::AccountId) -> u32 { + Self::member_kinds(account_id) + } +} diff --git a/pallets/membership/supernodes/src/tests.rs b/pallets/membership/supernodes/src/tests.rs new file mode 100644 index 00000000..f1daa0b0 --- /dev/null +++ b/pallets/membership/supernodes/src/tests.rs @@ -0,0 +1,150 @@ +// use crate::*; +// use frame_support::{ +// assert_noop, +// assert_ok, +// impl_outer_event, +// impl_outer_origin, +// parameter_types, +// traits::{ +// ConstU8, +// ConstU16, +// ConstU32, +// ConstU64, +// ConstU128, +// }, +// }; +// use frame_system as system; +// use sp_core::H256; +// use sp_io::TestExternalities; +// use sp_runtime::{ +// testing::Header, +// traits::{ +// BlakeTwo256, +// IdentityLookup, +// }, +// Perbill, +// }; + +// impl_outer_origin! { +// pub enum Origin for TestRuntime {} +// } + +// // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. +// #[derive(Clone, PartialEq, Eq, Debug)] +// pub struct TestRuntime; +// parameter_types! { +// pub const BlockHashCount: u32 = 250; +// pub const SS58Prefix: u16 = 33; +// } +// impl frame_system::Config for TestRuntime { +// type AccountData = pallet_balances::AccountData; +// type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account +// type BaseCallFilter = frame_support::traits::Everything; +// type BlockHashCount = ConstU32;; +// type BlockLength = (); +// type BlockNumber = u64; +// type BlockWeights = (); +// type Call = Call; +// type DbWeight = (); +// // type WeightMultiplierUpdate = (); +// type Event = (); +// type Hash = H256; +// type Hashing = BlakeTwo256; +// type Header = Header; +// type Index = u64; +// type Lookup = IdentityLookup; +// type OnKilledAccount = (); +// type OnNewAccount = (); +// type Origin = Origin; +// type PalletInfo = PalletInfo; +// type SystemWeightInfo = (); +// type Version = (); +// } + +// mod vec_set { +// pub use crate::Event; +// } + +// impl_outer_event! { +// pub enum TestEvent for TestRuntime { +// vec_set, +// system, +// } +// } + +// impl Config for TestRuntime { +// type Event = TestEvent; +// } + +// pub type System = system::Pallet; +// pub type VecSet = Module; + +// struct ExternalityBuilder; + +// impl ExternalityBuilder { +// pub fn build() -> TestExternalities { +// let storage = system::GenesisConfig::default().build_storage::().unwrap(); +// let mut ext = TestExternalities::from(storage); +// ext.execute_with(|| System::set_block_number(1)); +// ext +// } +// } + +// #[test] +// fn add_member_works() { +// ExternalityBuilder::build().execute_with(|| { +// assert_ok!(VecSet::add_member(Origin::root(), 2, 1)); + +// let expected_event = TestEvent::vec_set(RawEvent::MemberAdded(2, 1)); + +// assert_eq!(System::events()[0].event, expected_event,); + +// assert_eq!(VecSet::members(), vec![2]); +// assert_eq!(VecSet::member_kinds(2), 1); +// }) +// } + +// #[test] +// fn cant_add_duplicate_members() { +// ExternalityBuilder::build().execute_with(|| { +// assert_ok!(VecSet::add_member(Origin::root(), 2, 1)); + +// assert_noop!(VecSet::add_member(Origin::root(), 2, 1), Error::::AlreadyMember); +// }) +// } + +// #[test] +// fn cant_exceed_max_members() { +// ExternalityBuilder::build().execute_with(|| { +// // Add 16 members, reaching the max +// for i in 0..16 { +// assert_ok!(VecSet::add_member(Origin::root(), i, 2)); +// } + +// // Try to add the 17th member exceeding the max +// assert_noop!(VecSet::add_member(Origin::root(), 16, 2), Error::::MembershipLimitReached); +// }) +// } + +// #[test] +// fn remove_member_works() { +// ExternalityBuilder::build().execute_with(|| { +// assert_ok!(VecSet::add_member(Origin::root(), 2, 2)); +// assert_ok!(VecSet::remove_member(Origin::root(), 2, 2)); + +// // check correct event emission +// let expected_event = TestEvent::vec_set(RawEvent::MemberRemoved(2, 2)); +// assert!(System::events().iter().any(|a| a.event == expected_event)); + +// // check storage changes +// assert_eq!(VecSet::members(), Vec::::new()); +// }) +// } + +// #[test] +// fn remove_member_handles_errors() { +// ExternalityBuilder::build().execute_with(|| { +// // 2 is NOT previously added as a member +// assert_noop!(VecSet::remove_member(Origin::root(), 2, 2), Error::::NotMember); +// }) +// } diff --git a/pallets/mining/claims/hardware/Cargo.toml b/pallets/mining/claims/hardware/Cargo.toml new file mode 100644 index 00000000..68b044d9 --- /dev/null +++ b/pallets/mining/claims/hardware/Cargo.toml @@ -0,0 +1,59 @@ +[package] +name = 'mining-claims-hardware' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-setting-hardware/std', + 'mining-eligibility-hardware/std', + 'mining-rates-hardware/std', + 'mining-sampling-hardware/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-hardware = { default-features = false, package = 'mining-setting-hardware', path = '../../../mining/setting/hardware' } +mining-eligibility-hardware = { default-features = false, package = 'mining-eligibility-hardware', path = '../../../mining/eligibility/hardware' } +mining-rates-hardware = { default-features = false, package = 'mining-rates-hardware', path = '../../../mining/rates/hardware' } +mining-sampling-hardware = { default-features = false, package = 'mining-sampling-hardware', path = '../../../mining/sampling/hardware' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/claims/hardware/src/benchmarking.rs b/pallets/mining/claims/hardware/src/benchmarking.rs new file mode 100644 index 00000000..b93ed641 --- /dev/null +++ b/pallets/mining/claims/hardware/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningClaimsHardware; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningClaimsHardware, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/claims/hardware/src/lib.rs b/pallets/mining/claims/hardware/src/lib.rs new file mode 100644 index 00000000..c5b88da1 --- /dev/null +++ b/pallets/mining/claims/hardware/src/lib.rs @@ -0,0 +1,411 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_hardware; +use mining_eligibility_hardware; +use mining_rates_hardware; +use mining_sampling_hardware; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + mining_setting_hardware::Config + + mining_eligibility_hardware::Config + + mining_rates_hardware::Config + + mining_sampling_hardware::Config +{ + type Event: From> + Into<::Event>; + type MiningClaimsHardwareIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningClaimsHardwareClaimAmount: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningClaimsHardware(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningClaimsHardwareClaimResult { + pub hardware_claim_amount: U, + pub hardware_claim_block_redeemed: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningClaimsHardwareIndex, + ::MiningClaimsHardwareClaimAmount, + ::MiningSettingHardwareIndex, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_claims_hardware is created. (owner, mining_claims_hardware_id) + Created(AccountId, MiningClaimsHardwareIndex), + /// A mining_claims_hardware is transferred. (from, to, mining_claims_hardware_id) + Transferred(AccountId, AccountId, MiningClaimsHardwareIndex), + MiningClaimsHardwareClaimResultSet( + AccountId, MiningSettingHardwareIndex, MiningClaimsHardwareIndex, + MiningClaimsHardwareClaimAmount, BlockNumber + ), + /// A mining_claims_hardware is assigned to an mining_hardware. + /// (owner of mining_hardware, mining_claims_hardware_id, mining_setting_hardware_id) + AssignedHardwareClaimToConfiguration(AccountId, MiningClaimsHardwareIndex, MiningSettingHardwareIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningClaimsHardware { + /// Stores all the mining_claims_hardwares, key is the mining_claims_hardware id / index + pub MiningClaimsHardwares get(fn mining_claims_hardware): map hasher(opaque_blake2_256) T::MiningClaimsHardwareIndex => Option; + + /// Stores the total number of mining_claims_hardwares. i.e. the next mining_claims_hardware index + pub MiningClaimsHardwareCount get(fn mining_claims_hardware_count): T::MiningClaimsHardwareIndex; + + /// Stores mining_claims_hardware owner + pub MiningClaimsHardwareOwners get(fn mining_claims_hardware_owner): map hasher(opaque_blake2_256) T::MiningClaimsHardwareIndex => Option; + + /// Stores mining_claims_hardware_claims_result + pub MiningClaimsHardwareClaimResults get(fn mining_claims_hardware_claims_results): map hasher(opaque_blake2_256) (T::MiningSettingHardwareIndex, T::MiningClaimsHardwareIndex) => + Option>; + + /// Get mining_setting_hardware_id belonging to a mining_claims_hardware_id + pub HardwareClaimConfiguration get(fn hardware_claim_configuration): map hasher(opaque_blake2_256) T::MiningClaimsHardwareIndex => Option; + + /// Get mining_claims_hardware_id's belonging to a mining_setting_hardware_id + pub HardwareSettingClaims get(fn hardware_config_claims): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_claims_hardware + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_claims_hardware_id = Self::next_mining_claims_hardware_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_claims_hardware + let mining_claims_hardware = MiningClaimsHardware(unique_id); + Self::insert_mining_claims_hardware(&sender, mining_claims_hardware_id, mining_claims_hardware); + + Self::deposit_event(RawEvent::Created(sender, mining_claims_hardware_id)); + } + + /// Transfer a mining_claims_hardware to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_claims_hardware_id: T::MiningClaimsHardwareIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_claims_hardware_owner(mining_claims_hardware_id) == Some(sender.clone()), "Only owner can transfer mining mining_claims_hardware"); + + Self::update_owner(&to, mining_claims_hardware_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_claims_hardware_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(0)] + pub fn claim( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) { + let _sender = ensure_signed(origin)?; + + // TODO - implement similar to claims/token when it is working and uncomment the integration tests + return Err(DispatchError::Other("Not implemented")); + } + + /// Set mining_claims_hardware_claims_result + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_claims_hardware_claims_result( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + _hardware_claim_amount: Option, + // FIXME - the date should be generated without the extrinsic itself, not passed as an argument like this + _hardware_claim_block_redeemed: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_claims_hardware_id whose config we want to change actually exists + let is_mining_claims_hardware = Self::exists_mining_claims_hardware(mining_claims_hardware_id).is_ok(); + ensure!(is_mining_claims_hardware, "MiningClaimsHardware does not exist"); + + // Ensure that the caller is owner of the mining_claims_hardware_claims_result they are trying to change + ensure!(Self::mining_claims_hardware_owner(mining_claims_hardware_id) == Some(sender.clone()), "Only owner can set mining_claims_hardware_claims_result"); + + // TODO - adjust defaults + let hardware_claim_amount = match _hardware_claim_amount.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_claim_block_redeemed = match _hardware_claim_block_redeemed { + Some(value) => value, + None => 1u32.into() // Default + }; + + // Check if a mining_claims_hardware_claims_result already exists with the given mining_claims_hardware_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_claims_hardware_claims_result_index(mining_setting_hardware_id, mining_claims_hardware_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_hardware_id, mining_claims_hardware_id), |mining_claims_hardware_claims_result| { + if let Some(_mining_claims_hardware_claims_result) = mining_claims_hardware_claims_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_claims_hardware_claims_result.hardware_claim_amount = hardware_claim_amount.clone(); + _mining_claims_hardware_claims_result.hardware_claim_block_redeemed = hardware_claim_block_redeemed.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_claims_hardware_claims_result = >::get((mining_setting_hardware_id, mining_claims_hardware_id)); + if let Some(_mining_claims_hardware_claims_result) = fetched_mining_claims_hardware_claims_result { + info!("Latest field hardware_claim_amount {:#?}", _mining_claims_hardware_claims_result.hardware_claim_amount); + info!("Latest field hardware_claim_block_redeemed {:#?}", _mining_claims_hardware_claims_result.hardware_claim_block_redeemed); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_claims_hardware_claims_result instance with the input params + let mining_claims_hardware_claims_result_instance = MiningClaimsHardwareClaimResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hardware_claim_amount: hardware_claim_amount.clone(), + hardware_claim_block_redeemed: hardware_claim_block_redeemed.clone(), + }; + + >::insert( + (mining_setting_hardware_id, mining_claims_hardware_id), + &mining_claims_hardware_claims_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_claims_hardware_claims_result = >::get((mining_setting_hardware_id, mining_claims_hardware_id)); + if let Some(_mining_claims_hardware_claims_result) = fetched_mining_claims_hardware_claims_result { + info!("Inserted field hardware_claim_amount {:#?}", _mining_claims_hardware_claims_result.hardware_claim_amount); + info!("Inserted field hardware_claim_block_redeemed {:#?}", _mining_claims_hardware_claims_result.hardware_claim_block_redeemed); + } + } + + Self::deposit_event(RawEvent::MiningClaimsHardwareClaimResultSet( + sender, + mining_setting_hardware_id, + mining_claims_hardware_id, + hardware_claim_amount, + hardware_claim_block_redeemed, + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_claim_to_configuration( + origin, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_hardware = > + ::exists_mining_setting_hardware(mining_setting_hardware_id).is_ok(); + ensure!(is_configuration_hardware, "configuration_hardware does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the claim to + ensure!( + >::is_mining_setting_hardware_owner(mining_setting_hardware_id, sender.clone()).is_ok(), + "Only the configuration_hardware owner can assign itself a claim" + ); + + Self::associate_hardware_claim_with_configuration(mining_claims_hardware_id, mining_setting_hardware_id) + .expect("Unable to associate claim with configuration"); + + // Ensure that the given mining_claims_hardware_id already exists + let hardware_claim = Self::mining_claims_hardware(mining_claims_hardware_id); + ensure!(hardware_claim.is_some(), "Invalid mining_claims_hardware_id"); + + // // Ensure that the claim is not already owned by a different configuration + // // Unassign the claim from any existing configuration since it may only be owned by one configuration + // >::remove(mining_claims_hardware_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_claims_hardware_id, mining_setting_hardware_id); + + Self::deposit_event(RawEvent::AssignedHardwareClaimToConfiguration(sender, mining_claims_hardware_id, mining_setting_hardware_id)); + } + } +} + +impl Module { + pub fn is_mining_claims_hardware_owner( + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_claims_hardware_owner(&mining_claims_hardware_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningClaimsHardware" + ); + Ok(()) + } + + pub fn exists_mining_claims_hardware( + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) -> Result { + match Self::mining_claims_hardware(mining_claims_hardware_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningClaimsHardware does not exist")), + } + } + + pub fn exists_mining_claims_hardware_claims_result( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) -> Result<(), DispatchError> { + match Self::mining_claims_hardware_claims_results((mining_setting_hardware_id, mining_claims_hardware_id)) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningClaimsHardwareClaimResult does not exist")), + } + } + + pub fn has_value_for_mining_claims_hardware_claims_result_index( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_claims_hardware_claims_result has a value that is defined"); + let fetched_mining_claims_hardware_claims_result = + >::get((mining_setting_hardware_id, mining_claims_hardware_id)); + if let Some(_value) = fetched_mining_claims_hardware_claims_result { + info!("Found value for mining_claims_hardware_claims_result"); + return Ok(()); + } + warn!("No value for mining_claims_hardware_claims_result"); + Err(DispatchError::Other("No value for mining_claims_hardware_claims_result")) + } + + /// Only push the claim id onto the end of the vector if it does not already exist + pub fn associate_hardware_claim_with_configuration( + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given claim id + if let Some(configuration_claims) = Self::hardware_config_claims(mining_setting_hardware_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_hardware_id, + configuration_claims + ); + let not_configuration_contains_claim = !configuration_claims.contains(&mining_claims_hardware_id); + ensure!(not_configuration_contains_claim, "Configuration already contains the given claim id"); + info!("Configuration id key exists but its vector value does not contain the given claim id"); + >::mutate(mining_setting_hardware_id, |v| { + if let Some(value) = v { + value.push(mining_claims_hardware_id); + } + }); + info!( + "Associated claim {:?} with configuration {:?}", + mining_claims_hardware_id, + mining_setting_hardware_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the claim \ + id {:?} to its vector value", + mining_setting_hardware_id, + mining_claims_hardware_id + ); + >::insert(mining_setting_hardware_id, &vec![mining_claims_hardware_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_claims_hardware_id() -> Result { + let mining_claims_hardware_id = Self::mining_claims_hardware_count(); + if mining_claims_hardware_id == ::max_value() { + return Err(DispatchError::Other("MiningClaimsHardware count overflow")); + } + Ok(mining_claims_hardware_id) + } + + fn insert_mining_claims_hardware( + owner: &T::AccountId, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + mining_claims_hardware: MiningClaimsHardware, + ) { + // Create and store mining mining_claims_hardware + >::insert(mining_claims_hardware_id, mining_claims_hardware); + >::put(mining_claims_hardware_id + One::one()); + >::insert(mining_claims_hardware_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_claims_hardware_id: T::MiningClaimsHardwareIndex) { + >::insert(mining_claims_hardware_id, to); + } +} diff --git a/pallets/mining/claims/hardware/src/mock.rs b/pallets/mining/claims/hardware/src/mock.rs new file mode 100644 index 00000000..13c7a3a7 --- /dev/null +++ b/pallets/mining/claims/hardware/src/mock.rs @@ -0,0 +1,163 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl mining_setting_hardware::Config for Test { + type Event = (); + type MiningSettingHardwareDevEUI = u64; + // type MiningSettingHardwareType = + // MiningSettingHardwareTypes; + type MiningSettingHardwareID = u64; + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingHardwareIndex = u64; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure = bool; + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingHardwareType = Vec; +} +impl mining_eligibility_hardware::Config for Test { + type Event = (); + type MiningEligibilityHardwareCalculatedEligibility = u64; + type MiningEligibilityHardwareIndex = u64; + type MiningEligibilityHardwareUptimePercentage = u32; + // type MiningEligibilityHardwareAuditorAccountID = u64; +} +impl mining_rates_hardware::Config for Test { + type Event = (); + type MiningRatesHardwareCategory1MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory2MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory3MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareIndex = u64; + type MiningRatesHardwareInsecure = u32; + // Mining Speed Boost Max Rates + type MiningRatesHardwareMaxHardware = u32; + // Mining Speed Boost Rate + type MiningRatesHardwareSecure = u32; +} +impl mining_sampling_hardware::Config for Test { + type Event = (); + type MiningSamplingHardwareIndex = u64; + type MiningSamplingHardwareSampleHardwareOnline = u64; +} +impl Config for Test { + type Event = (); + type MiningClaimsHardwareClaimAmount = u64; + type MiningClaimsHardwareIndex = u64; +} + +pub type MiningClaimsHardwareTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/claims/hardware/src/tests.rs b/pallets/mining/claims/hardware/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/claims/hardware/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/claims/token/Cargo.toml b/pallets/mining/claims/token/Cargo.toml new file mode 100644 index 00000000..c7450118 --- /dev/null +++ b/pallets/mining/claims/token/Cargo.toml @@ -0,0 +1,59 @@ +[package] +name = 'mining-claims-token' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-setting-token/std', + 'mining-eligibility-token/std', + 'mining-rates-token/std', + 'mining-sampling-token/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-token = { default-features = false, package = 'mining-setting-token', path = '../../../mining/setting/token' } +mining-eligibility-token = { default-features = false, package = 'mining-eligibility-token', path = '../../../mining/eligibility/token' } +mining-rates-token = { default-features = false, package = 'mining-rates-token', path = '../../../mining/rates/token' } +mining-sampling-token = { default-features = false, package = 'mining-sampling-token', path = '../../../mining/sampling/token' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/claims/token/src/benchmarking.rs b/pallets/mining/claims/token/src/benchmarking.rs new file mode 100644 index 00000000..6c1ebd52 --- /dev/null +++ b/pallets/mining/claims/token/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningClaimsToken; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningClaimsToken, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/claims/token/src/lib.rs b/pallets/mining/claims/token/src/lib.rs new file mode 100644 index 00000000..a9300a38 --- /dev/null +++ b/pallets/mining/claims/token/src/lib.rs @@ -0,0 +1,512 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_token; +use mining_eligibility_token; +use mining_rates_token; +use mining_sampling_token; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + mining_setting_token::Config + + mining_eligibility_token::Config + + mining_rates_token::Config + + mining_sampling_token::Config +{ + type Event: From> + Into<::Event>; + type MiningClaimsTokenIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningClaimsTokenClaimAmount: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningClaimsToken(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningClaimsTokenClaimResult { + pub token_claim_amount: U, + pub token_claim_block_redeemed: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningClaimsTokenIndex, + ::MiningClaimsTokenClaimAmount, + ::MiningSettingTokenIndex, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_claims_token is created. (owner, mining_claims_token_id) + Created(AccountId, MiningClaimsTokenIndex), + /// A mining_claims_token is transferred. (from, to, mining_claims_token_id) + Transferred(AccountId, AccountId, MiningClaimsTokenIndex), + MiningClaimsTokenClaimResultSet( + AccountId, MiningSettingTokenIndex, MiningClaimsTokenIndex, + MiningClaimsTokenClaimAmount, BlockNumber + ), + /// A mining_claims_token is assigned to an mining_token. + /// (owner of mining_token, mining_claims_token_id, mining_setting_token_id) + AssignedTokenClaimToConfiguration(AccountId, MiningClaimsTokenIndex, MiningSettingTokenIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningClaimsToken { + /// Stores all the mining_claims_tokens, key is the mining_claims_token id / index + pub MiningClaimsTokens get(fn mining_claims_token): map hasher(opaque_blake2_256) T::MiningClaimsTokenIndex => Option; + + /// Stores the total number of mining_claims_tokens. i.e. the next mining_claims_token index + pub MiningClaimsTokenCount get(fn mining_claims_token_count): T::MiningClaimsTokenIndex; + + /// Stores mining_claims_token owner + pub MiningClaimsTokenOwners get(fn mining_claims_token_owner): map hasher(opaque_blake2_256) T::MiningClaimsTokenIndex => Option; + + /// Stores mining_claims_token_claims_result + pub MiningClaimsTokenClaimResults get(fn mining_claims_token_claims_results): map hasher(opaque_blake2_256) (T::MiningSettingTokenIndex, T::MiningClaimsTokenIndex) => + Option>; + + /// Get mining_setting_token_id belonging to a mining_claims_token_id + pub TokenClaimConfiguration get(fn token_claim_configuration): map hasher(opaque_blake2_256) T::MiningClaimsTokenIndex => Option; + + /// Get mining_claims_token_id's belonging to a mining_setting_token_id + pub TokenSettingClaims get(fn token_setting_claims): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_claims_token + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_claims_token_id = Self::next_mining_claims_token_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_claims_token + let mining_claims_token = MiningClaimsToken(unique_id); + Self::insert_mining_claims_token(&sender, mining_claims_token_id, mining_claims_token); + + Self::deposit_event(RawEvent::Created(sender, mining_claims_token_id)); + } + + /// Transfer a mining_claims_token to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_claims_token_id: T::MiningClaimsTokenIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_claims_token_owner(mining_claims_token_id) == Some(sender.clone()), "Only owner can transfer mining mining_claims_token"); + + Self::update_owner(&to, mining_claims_token_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_claims_token_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(0)] + pub fn claim( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + mining_claims_token_id: T::MiningClaimsTokenIndex, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_claims_token_id whose config we want to change actually exists + let is_mining_claims_token = Self::exists_mining_claims_token(mining_claims_token_id).is_ok(); + ensure!(is_mining_claims_token, "MiningClaimsToken does not exist"); + + // Ensure that the caller is owner of the mining_claims_token_claims_result they are trying to change + ensure!(Self::mining_claims_token_owner(mining_claims_token_id) == Some(sender.clone()), "Only owner can set mining_claims_token_claims_result"); + + // Check that only allow the owner of the configuration that the claim belongs to call this extrinsic + // and claim their eligibility + ensure!( + >::is_mining_setting_token_owner( + mining_setting_token_id, sender.clone() + ).is_ok(), + "Only the configuration_token owner can claim their associated eligibility" + ); + + // Check that the extrinsic call is made after the end date defined in the provided configuration + + // FIXME + // let current_block = >::block_number(); + // // Get the config associated with the given configuration_token + // if let Some(configuration_token_setting) = >::mining_setting_token_token_settings(mining_setting_token_id) { + // if let _token_lock_interval_blocks = configuration_token_setting.token_lock_interval_blocks { + // ensure!(current_block > _token_lock_interval_blocks, "Claim may not be made until after the end of the lock interval"); + // } else { + // return Err(DispatchError::Other("Cannot find token_setting end block associated with the claim")); + // } + // } else { + // return Err(DispatchError::Other("Cannot find token_setting associated with the claim")); + // } + + // Check that the provided eligibility amount has not already been claimed + // i.e. there should only be a single claim instance for each configuration and eligibility in the MVP + if let Some(token_setting_claims) = Self::token_setting_claims(mining_setting_token_id) { + ensure!(token_setting_claims.len() == 1, "Cannot have zero or more than one claim associated with configuration/eligibility"); + } else { + return Err(DispatchError::Other("Cannot find configuration_claims associated with the claim")); + } + + // Record the claim associated with their configuration/eligibility + let token_claim_amount: T::MiningClaimsTokenClaimAmount = 0u32.into(); + let token_claim_block_redeemed: T::BlockNumber = >::block_number(); + if let Some(eligibility_token) = >::mining_eligibility_token_eligibility_results((mining_setting_token_id, mining_eligibility_token_id)) { + if let token_calculated_eligibility = eligibility_token.token_calculated_eligibility { + ensure!(token_calculated_eligibility > 0u32.into(), "Calculated eligibility is zero. Nothing to claim."); + // FIXME - unable to figure out how to cast here! + // token_claim_amount = (token_calculated_eligibility as T::MiningClaimsTokenClaimAmount).clone(); + } else { + return Err(DispatchError::Other("Cannot find token_eligibility calculated_eligibility associated with the claim")); + } + } else { + return Err(DispatchError::Other("Cannot find token_eligibility associated with the claim")); + } + + // Check if a mining_claims_token_claims_result already exists with the given mining_claims_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_claims_token_claims_result_index(mining_setting_token_id, mining_claims_token_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_token_id, mining_claims_token_id), |mining_claims_token_claims_result| { + if let Some(_mining_claims_token_claims_result) = mining_claims_token_claims_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_claims_token_claims_result.token_claim_amount = token_claim_amount.clone(); + _mining_claims_token_claims_result.token_claim_block_redeemed = token_claim_block_redeemed.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_claims_token_claims_result = >::get((mining_setting_token_id, mining_claims_token_id)); + if let Some(_mining_claims_token_claims_result) = fetched_mining_claims_token_claims_result { + info!("Latest field token_claim_amount {:#?}", _mining_claims_token_claims_result.token_claim_amount); + info!("Latest field token_claim_block_redeemed {:#?}", _mining_claims_token_claims_result.token_claim_block_redeemed); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_claims_token_claims_result instance with the input params + let mining_claims_token_claims_result_instance = MiningClaimsTokenClaimResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_claim_amount: token_claim_amount.clone(), + token_claim_block_redeemed: token_claim_block_redeemed.clone(), + }; + + >::insert( + (mining_setting_token_id, mining_claims_token_id), + &mining_claims_token_claims_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_claims_token_claims_result = >::get((mining_setting_token_id, mining_claims_token_id)); + if let Some(_mining_claims_token_claims_result) = fetched_mining_claims_token_claims_result { + info!("Inserted field token_claim_amount {:#?}", _mining_claims_token_claims_result.token_claim_amount); + info!("Inserted field token_claim_block_redeemed {:#?}", _mining_claims_token_claims_result.token_claim_block_redeemed); + } + } + + // Self::deposit_event(RawEvent::MiningClaimsTokenClaimResultSet( + // sender, + // mining_setting_token_id, + // mining_claims_token_id, + // token_claim_amount, + // token_claim_block_redeemed, + // )); + + // After the claim is stored, then if the user wins a proportion of the block reward + // through validating or nominating, then we will multiply that reward by their + // claimed eligibility to determine what mining speed bonus they should be given. + } + + /// Set mining_claims_token_claims_result + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_claims_token_claims_result( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + mining_claims_token_id: T::MiningClaimsTokenIndex, + _token_claim_amount: Option, + _token_claim_block_redeemed: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_claims_token_id whose config we want to change actually exists + let is_mining_claims_token = Self::exists_mining_claims_token(mining_claims_token_id).is_ok(); + ensure!(is_mining_claims_token, "MiningClaimsToken does not exist"); + + // Ensure that the caller is owner of the mining_claims_token_claims_result they are trying to change + ensure!(Self::mining_claims_token_owner(mining_claims_token_id) == Some(sender.clone()), "Only owner can set mining_claims_token_claims_result"); + + // TODO - adjust defaults + let token_claim_amount = match _token_claim_amount.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_claim_block_redeemed = match _token_claim_block_redeemed { + Some(value) => value, + None => >::block_number() + }; + + // Check if a mining_claims_token_claims_result already exists with the given mining_claims_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_claims_token_claims_result_index(mining_setting_token_id, mining_claims_token_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_token_id, mining_claims_token_id), |mining_claims_token_claims_result| { + if let Some(_mining_claims_token_claims_result) = mining_claims_token_claims_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_claims_token_claims_result.token_claim_amount = token_claim_amount.clone(); + _mining_claims_token_claims_result.token_claim_block_redeemed = token_claim_block_redeemed.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_claims_token_claims_result = >::get((mining_setting_token_id, mining_claims_token_id)); + if let Some(_mining_claims_token_claims_result) = fetched_mining_claims_token_claims_result { + info!("Latest field token_claim_amount {:#?}", _mining_claims_token_claims_result.token_claim_amount); + info!("Latest field token_claim_block_redeemed {:#?}", _mining_claims_token_claims_result.token_claim_block_redeemed); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_claims_token_claims_result instance with the input params + let mining_claims_token_claims_result_instance = MiningClaimsTokenClaimResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_claim_amount: token_claim_amount.clone(), + token_claim_block_redeemed: token_claim_block_redeemed.clone(), + }; + + >::insert( + (mining_setting_token_id, mining_claims_token_id), + &mining_claims_token_claims_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_claims_token_claims_result = >::get((mining_setting_token_id, mining_claims_token_id)); + if let Some(_mining_claims_token_claims_result) = fetched_mining_claims_token_claims_result { + info!("Inserted field token_claim_amount {:#?}", _mining_claims_token_claims_result.token_claim_amount); + info!("Inserted field token_claim_block_redeemed {:#?}", _mining_claims_token_claims_result.token_claim_block_redeemed); + } + } + + Self::deposit_event(RawEvent::MiningClaimsTokenClaimResultSet( + sender, + mining_setting_token_id, + mining_claims_token_id, + token_claim_amount, + token_claim_block_redeemed, + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_claim_to_configuration( + origin, + mining_claims_token_id: T::MiningClaimsTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_token = > + ::exists_mining_setting_token(mining_setting_token_id).is_ok(); + ensure!(is_configuration_token, "configuration_token does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the claim to + ensure!( + >::is_mining_setting_token_owner(mining_setting_token_id, sender.clone()).is_ok(), + "Only the configuration_token owner can assign itself a claim" + ); + + Self::associate_token_claim_with_configuration(mining_claims_token_id, mining_setting_token_id) + .expect("Unable to associate claim with configuration"); + + // Ensure that the given mining_claims_token_id already exists + let token_claim = Self::mining_claims_token(mining_claims_token_id); + ensure!(token_claim.is_some(), "Invalid mining_claims_token_id"); + + // // Ensure that the claim is not already owned by a different configuration + // // Unassign the claim from any existing configuration since it may only be owned by one configuration + // >::remove(mining_claims_token_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_claims_token_id, mining_setting_token_id); + + Self::deposit_event(RawEvent::AssignedTokenClaimToConfiguration(sender, mining_claims_token_id, mining_setting_token_id)); + } + } +} + +impl Module { + pub fn is_mining_claims_token_owner( + mining_claims_token_id: T::MiningClaimsTokenIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_claims_token_owner(&mining_claims_token_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of MiningClaimsToken" + ); + Ok(()) + } + + pub fn exists_mining_claims_token( + mining_claims_token_id: T::MiningClaimsTokenIndex, + ) -> Result { + match Self::mining_claims_token(mining_claims_token_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningClaimsToken does not exist")), + } + } + + pub fn exists_mining_claims_token_claims_result( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_claims_token_id: T::MiningClaimsTokenIndex, + ) -> Result<(), DispatchError> { + match Self::mining_claims_token_claims_results((mining_setting_token_id, mining_claims_token_id)) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningClaimsTokenClaimResult does not exist")), + } + } + + pub fn has_value_for_mining_claims_token_claims_result_index( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_claims_token_id: T::MiningClaimsTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_claims_token_claims_result has a value that is defined"); + let fetched_mining_claims_token_claims_result = + >::get((mining_setting_token_id, mining_claims_token_id)); + if let Some(_value) = fetched_mining_claims_token_claims_result { + info!("Found value for mining_claims_token_claims_result"); + return Ok(()); + } + warn!("No value for mining_claims_token_claims_result"); + Err(DispatchError::Other("No value for mining_claims_token_claims_result")) + } + + /// Only push the claim id onto the end of the vector if it does not already exist + pub fn associate_token_claim_with_configuration( + mining_claims_token_id: T::MiningClaimsTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given claim id + if let Some(configuration_claims) = Self::token_setting_claims(mining_setting_token_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_token_id, + configuration_claims + ); + let not_configuration_contains_claim = !configuration_claims.contains(&mining_claims_token_id); + ensure!(not_configuration_contains_claim, "Configuration already contains the given claim id"); + info!("Configuration id key exists but its vector value does not contain the given claim id"); + >::mutate(mining_setting_token_id, |v| { + if let Some(value) = v { + value.push(mining_claims_token_id); + } + }); + info!( + "Associated claim {:?} with configuration {:?}", + mining_claims_token_id, + mining_setting_token_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the claim \ + id {:?} to its vector value", + mining_setting_token_id, + mining_claims_token_id + ); + >::insert(mining_setting_token_id, &vec![mining_claims_token_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_claims_token_id() -> Result { + let mining_claims_token_id = Self::mining_claims_token_count(); + if mining_claims_token_id == ::max_value() { + return Err(DispatchError::Other("MiningClaimsToken count overflow")); + } + Ok(mining_claims_token_id) + } + + fn insert_mining_claims_token( + owner: &T::AccountId, + mining_claims_token_id: T::MiningClaimsTokenIndex, + mining_claims_token: MiningClaimsToken, + ) { + // Create and store mining mining_claims_token + >::insert(mining_claims_token_id, mining_claims_token); + >::put(mining_claims_token_id + One::one()); + >::insert(mining_claims_token_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_claims_token_id: T::MiningClaimsTokenIndex) { + >::insert(mining_claims_token_id, to); + } +} diff --git a/pallets/mining/claims/token/src/mock.rs b/pallets/mining/claims/token/src/mock.rs new file mode 100644 index 00000000..9d46c72f --- /dev/null +++ b/pallets/mining/claims/token/src/mock.rs @@ -0,0 +1,158 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl mining_setting_token::Config for Test { + type Event = (); + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingTokenIndex = u64; + type MiningSettingTokenLockAmount = u64; + // Mining Speed Boost Token Mining Config + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingTokenType = Vec; +} +impl mining_eligibility_token::Config for Test { + type Event = (); + type MiningEligibilityTokenCalculatedEligibility = u64; + type MiningEligibilityTokenIndex = u64; + type MiningEligibilityTokenLockedPercentage = u32; + // type MiningEligibilityTokenAuditorAccountID = u64; +} +impl mining_rates_token::Config for Test { + type Event = (); + type MiningRatesTokenIndex = u64; + type MiningRatesTokenMaxLoyalty = u32; + // Mining Speed Boost Max Rates + type MiningRatesTokenMaxToken = u32; + type MiningRatesTokenTokenDOT = u32; + type MiningRatesTokenTokenIOTA = u32; + // Mining Speed Boost Rate + type MiningRatesTokenTokenMXC = u32; +} +impl mining_sampling_token::Config for Test { + type Event = (); + type MiningSamplingTokenIndex = u64; + type MiningSamplingTokenSampleLockedAmount = u64; +} +impl Config for Test { + type Event = (); + type MiningClaimsTokenClaimAmount = u64; + type MiningClaimsTokenIndex = u64; +} + +pub type MiningClaimsTokenTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/claims/token/src/tests.rs b/pallets/mining/claims/token/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/claims/token/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/eligibility/hardware/Cargo.toml b/pallets/mining/eligibility/hardware/Cargo.toml new file mode 100644 index 00000000..27101d64 --- /dev/null +++ b/pallets/mining/eligibility/hardware/Cargo.toml @@ -0,0 +1,57 @@ +[package] +name = 'mining-eligibility-hardware' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-rates-hardware/std', + 'mining-setting-hardware/std', + 'mining-sampling-hardware/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-hardware = { default-features = false, package = 'mining-setting-hardware', path = '../../../mining/setting/hardware' } +mining-rates-hardware = { default-features = false, package = 'mining-rates-hardware', path = '../../../mining/rates/hardware' } +mining-sampling-hardware = { default-features = false, package = 'mining-sampling-hardware', path = '../../../mining/sampling/hardware' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/eligibility/hardware/src/benchmarking.rs b/pallets/mining/eligibility/hardware/src/benchmarking.rs new file mode 100644 index 00000000..1ba51253 --- /dev/null +++ b/pallets/mining/eligibility/hardware/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningEligibilityHardware; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningEligibilityHardware, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/eligibility/hardware/src/lib.rs b/pallets/mining/eligibility/hardware/src/lib.rs new file mode 100644 index 00000000..19851025 --- /dev/null +++ b/pallets/mining/eligibility/hardware/src/lib.rs @@ -0,0 +1,583 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_hardware; +use mining_rates_hardware; +use mining_sampling_hardware; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + mining_rates_hardware::Config + + mining_setting_hardware::Config + + mining_sampling_hardware::Config +{ + type Event: From> + Into<::Event>; + type MiningEligibilityHardwareIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningEligibilityHardwareCalculatedEligibility: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningEligibilityHardwareUptimePercentage: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // type MiningEligibilityHardwareAuditorAccountID: Parameter + Member + AtLeast32Bit + + // Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningEligibilityHardware(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningEligibilityHardwareResult { + pub hardware_calculated_eligibility: U, + pub hardware_uptime_percentage: V, + /* pub hardware_block_audited: W, + * pub hardware_auditor_account_id: X, */ +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningEligibilityHardwareIndex, + ::MiningEligibilityHardwareCalculatedEligibility, + ::MiningEligibilityHardwareUptimePercentage, + // ::MiningEligibilityHardwareAuditorAccountID, + ::MiningSettingHardwareIndex, + // ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_eligibility_hardware is created. (owner, mining_eligibility_hardware_id) + Created(AccountId, MiningEligibilityHardwareIndex), + /// A mining_eligibility_hardware is transferred. (from, to, mining_eligibility_hardware_id) + Transferred(AccountId, AccountId, MiningEligibilityHardwareIndex), + // MiningEligibilityHardwareResultSet( + // AccountId, MiningSettingHardwareIndex, MiningEligibilityHardwareIndex, + // MiningEligibilityHardwareCalculatedEligibility, MiningEligibilityHardwareUptimePercentage, + // BlockNumber, MiningEligibilityHardwareAuditorAccountID + // ), + MiningEligibilityHardwareResultSet( + AccountId, MiningSettingHardwareIndex, MiningEligibilityHardwareIndex, + MiningEligibilityHardwareCalculatedEligibility, MiningEligibilityHardwareUptimePercentage + // BlockNumber, MiningEligibilityHardwareAuditorAccountID + ), + /// A mining_eligibility_hardware is assigned to an mining_setting_hardware. + /// (owner of mining_hardware, mining_eligibility_hardware_id, mining_setting_hardware_id) + AssignedHardwareEligibilityToConfiguration(AccountId, MiningEligibilityHardwareIndex, MiningSettingHardwareIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningEligibilityHardware { + /// Stores all the mining_eligibility_hardwares, key is the mining_eligibility_hardware id / index + pub MiningEligibilityHardwares get(fn mining_eligibility_hardware): map hasher(opaque_blake2_256) T::MiningEligibilityHardwareIndex => Option; + + /// Stores the total number of mining_eligibility_hardwares. i.e. the next mining_eligibility_hardware index + pub MiningEligibilityHardwareCount get(fn mining_eligibility_hardware_count): T::MiningEligibilityHardwareIndex; + + /// Stores mining_eligibility_hardware owner + pub MiningEligibilityHardwareOwners get(fn mining_eligibility_hardware_owner): map hasher(opaque_blake2_256) T::MiningEligibilityHardwareIndex => Option; + + /// Stores mining_eligibility_hardware_result + pub MiningEligibilityHardwareResults get(fn mining_eligibility_hardware_eligibility_results): map hasher(opaque_blake2_256) (T::MiningSettingHardwareIndex, T::MiningEligibilityHardwareIndex) => + Option>; + + /// Get mining_setting_hardware_id belonging to a mining_eligibility_hardware_id + pub HardwareEligibilityConfiguration get(fn hardware_resulturation): map hasher(opaque_blake2_256) T::MiningEligibilityHardwareIndex => Option; + + /// Get mining_eligibility_hardware_id's belonging to a mining_setting_hardware_id + pub HardwareSettingEligibilities get(fn hardware_config_eligibilities): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_eligibility_hardware + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_eligibility_hardware_id = Self::next_mining_eligibility_hardware_id()?; + + // Geneeligibility a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_eligibility_hardware + let mining_eligibility_hardware = MiningEligibilityHardware(unique_id); + Self::insert_mining_eligibility_hardware(&sender, mining_eligibility_hardware_id, mining_eligibility_hardware); + + Self::deposit_event(RawEvent::Created(sender, mining_eligibility_hardware_id)); + } + + /// Transfer a mining_eligibility_hardware to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_eligibility_hardware_owner(mining_eligibility_hardware_id) == Some(sender.clone()), "Only owner can transfer mining mining_eligibility_hardware"); + + Self::update_owner(&to, mining_eligibility_hardware_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_eligibility_hardware_id)); + } + + // FIXME - implement this and fix the type errors and uncomment it in the integration tests + // /// Calculate mining_eligibility_hardware_result + // pub fn calculate_mining_eligibility_hardware_result( + // origin, + // mining_setting_hardware_id: T::MiningSettingHardwareIndex, + // mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + // ) { + // let sender = ensure_signed(origin)?; + + // // Ensure that the mining_eligibility_hardware_id whose config we want to change actually exists + // let is_mining_eligibility_hardware = Self::exists_mining_eligibility_hardware(mining_eligibility_hardware_id).is_ok(); + // ensure!(is_mining_eligibility_hardware, "MiningEligibilityHardware does not exist"); + + // // Ensure that the caller is owner of the mining_eligibility_hardware_result they are trying to change + // ensure!(Self::mining_eligibility_hardware_owner(mining_eligibility_hardware_id) == Some(sender.clone()), "Only owner can set mining_eligibility_hardware_result"); + + // let DEFAULT_RATE_CONFIG = 0u32; + // let mut hardware_calculated_eligibility = 0u32.into(); + // let mut part_hardware_calculated_eligibility = 0u32.into(); + // let mut hardware_uptime_percentage = 0u32.into(); + // let mut token_token_max_token = 0u32.into(); + + // let mut current_token_type; + // let mut current_hardware_uptime_amount; + // // Get the config associated with the given configuration_hardware + // if let Some(configuration_hardware_config) = >::mining_setting_hardware_token_settings(mining_setting_hardware_id) { + // if let token_type = configuration_hardware_config.token_type { + // if token_type != "".to_string() { + // current_token_type = token_type.clone(); + + // if let hardware_uptime_amount = configuration_hardware_config.hardware_uptime_amount { + // if hardware_uptime_amount != 0 { + // current_hardware_uptime_amount = hardware_uptime_amount; + + // // Get list of all sampling_hardware_ids that correspond to the given mining_setting_hardware_id + // // of type MiningSamplingHardwareIndex + // let sampling_hardware_ids = > + // ::hardware_config_samplings(mining_setting_hardware_id); + + // let mut sample_count = 0; + // let mut current_sample_tokens_locked = 0; + // let mut current_hardware_rate = 0; + // let mut current_token_max_tokens = 0; + // let mut total = 0; + // // Iteratve through all the associated samples + // for (index, sampling_hardware_id) in sampling_hardware_ids.iter().enumerate() { + // // Retrieve the current corresponding sampling_hardware_config + // // of type MiningSamplingHardwareSetting + // if let Some(current_sampling_hardware_config) = >::mining_samplings_hardware_samplings_configs( + // (mining_setting_hardware_id, sampling_hardware_id) + // ) { + // if let tokens_locked = current_sampling_hardware_config.token_sample_locked_amount { + // sample_count += 1; + + // if tokens_locked == 0 { + // info!("Mining rate sample has nothing locked. Skipping to next sampling."); + // continue; + // } + // current_sample_tokens_locked = tokens_locked; + + // if let Some(hardware_rates_config) = >::mining_rates_hardware_rates_configs(DEFAULT_RATE_CONFIG) { + + // if current_token_type == "MXC".to_string() { + // current_hardware_rate = hardware_rates_config.token_token_mxc; + // } else if current_token_type == "IOTA".to_string() { + // current_hardware_rate = hardware_rates_config.token_token_iota; + // } else if current_token_type == "DOT".to_string() { + // current_hardware_rate = hardware_rates_config.token_token_dot; + // } + // current_token_max_tokens = hardware_rates_config.token_token_max_token; + // hardware_uptime_percentage = current_hardware_rate * (current_sample_tokens_locked / current_hardware_uptime_amount); + + // part_hardware_calculated_eligibility = part_hardware_calculated_eligibility + hardware_uptime_percentage * current_token_max_tokens; + // } else { + // info!("Mining rate config missing"); + // break; + // return Err(DispatchError::Other("Mining rate config missing")); + // } + // } + // } + // } + // hardware_calculated_eligibility = part_hardware_calculated_eligibility / sample_count; + // info!("Calculate eligibilty based on average {:#?}", hardware_calculated_eligibility); + // } + // } + // } + // } + // } + + // // Check if a mining_eligibility_hardware_result already exists with the given mining_eligibility_hardware_id + // // to determine whether to insert new or mutate existing. + // if Self::has_value_for_mining_eligibility_hardware_result_index(mining_setting_hardware_id, mining_eligibility_hardware_id).is_ok() { + // info!("Mutating values"); + // >::mutate((mining_setting_hardware_id, mining_eligibility_hardware_id), |mining_eligibility_hardware_result| { + // if let Some(_mining_eligibility_hardware_result) = mining_eligibility_hardware_result { + // // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + // _mining_eligibility_hardware_result.hardware_calculated_eligibility = hardware_calculated_eligibility.clone(); + // _mining_eligibility_hardware_result.hardware_uptime_percentage = hardware_uptime_percentage.clone(); + // // _mining_eligibility_hardware_result.hardware_block_audited = hardware_block_audited.clone(); + // // _mining_eligibility_hardware_result.hardware_auditor_account_id = hardware_auditor_account_id.clone(); + // } + // }); + // info!("Checking mutated values"); + // let fetched_mining_eligibility_hardware_result = >::get((mining_setting_hardware_id, mining_eligibility_hardware_id)); + // if let Some(_mining_eligibility_hardware_result) = fetched_mining_eligibility_hardware_result { + // info!("Latest field hardware_calculated_eligibility {:#?}", _mining_eligibility_hardware_result.hardware_calculated_eligibility); + // info!("Latest field hardware_uptime_percentage {:#?}", _mining_eligibility_hardware_result.hardware_uptime_percentage); + // // info!("Latest field hardware_block_audited {:#?}", _mining_eligibility_hardware_result.hardware_block_audited); + // // info!("Latest field hardware_auditor_account_id {:#?}", _mining_eligibility_hardware_result.hardware_auditor_account_id); + // } + // } else { + // info!("Inserting values"); + + // // Create a new mining mining_eligibility_hardware_result instance with the input params + // let mining_eligibility_hardware_result_instance = MiningEligibilityHardwareResult { + // // Since each parameter passed into the function is optional (i.e. `Option`) + // // we will assign a default value if a parameter value is not provided. + // hardware_calculated_eligibility: hardware_calculated_eligibility.clone(), + // hardware_uptime_percentage: hardware_uptime_percentage.clone(), + // // hardware_block_audited: hardware_block_audited.clone(), + // // hardware_auditor_account_id: hardware_auditor_account_id.clone(), + // }; + + // >::insert( + // (mining_setting_hardware_id, mining_eligibility_hardware_id), + // &mining_eligibility_hardware_result_instance + // ); + + // info!("Checking inserted values"); + // let fetched_mining_eligibility_hardware_result = >::get((mining_setting_hardware_id, mining_eligibility_hardware_id)); + // if let Some(_mining_eligibility_hardware_result) = fetched_mining_eligibility_hardware_result { + // info!("Inserted field hardware_calculated_eligibility {:#?}", _mining_eligibility_hardware_result.hardware_calculated_eligibility); + // info!("Inserted field hardware_uptime_percentage {:#?}", _mining_eligibility_hardware_result.hardware_uptime_percentage); + // // info!("Inserted field hardware_block_audited {:#?}", _mining_eligibility_hardware_result.hardware_block_audited); + // // info!("Inserted field hardware_auditor_account_id {:#?}", _mining_eligibility_hardware_result.hardware_auditor_account_id); + // } + // } + + // Self::deposit_event(RawEvent::MiningEligibilityHardwareResultSet( + // sender, + // mining_setting_hardware_id, + // mining_eligibility_hardware_id, + // hardware_calculated_eligibility, + // hardware_uptime_percentage, + // // hardware_block_audited, + // // hardware_auditor_account_id + // )); + // } + + /// Set mining_eligibility_hardware_result + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_eligibility_hardware_eligibility_result( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + _hardware_calculated_eligibility: Option, + _hardware_uptime_percentage: Option, + // _hardware_block_audited: Option, + // _hardware_auditor_account_id: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_eligibility_hardware_id whose config we want to change actually exists + let is_mining_eligibility_hardware = Self::exists_mining_eligibility_hardware(mining_eligibility_hardware_id).is_ok(); + ensure!(is_mining_eligibility_hardware, "MiningEligibilityHardware does not exist"); + + // Ensure that the caller is owner of the mining_eligibility_hardware_result they are trying to change + ensure!(Self::mining_eligibility_hardware_owner(mining_eligibility_hardware_id) == Some(sender.clone()), "Only owner can set mining_eligibility_hardware_result"); + + // TODO - adjust default eligibilitys + let hardware_calculated_eligibility = match _hardware_calculated_eligibility.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_uptime_percentage = match _hardware_uptime_percentage { + Some(value) => value, + None => 1u32.into() // Default + }; + // let hardware_block_audited = match _hardware_block_audited { + // Some(value) => value, + // None => 1u32.into() // Default + // }; + // let hardware_auditor_account_id = match _hardware_auditor_account_id { + // Some(value) => value, + // None => 1u32.into() // Default + // }; + + // Check if a mining_eligibility_hardware_result already exists with the given mining_eligibility_hardware_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_eligibility_hardware_result_index(mining_setting_hardware_id, mining_eligibility_hardware_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_hardware_id, mining_eligibility_hardware_id), |mining_eligibility_hardware_result| { + if let Some(_mining_eligibility_hardware_result) = mining_eligibility_hardware_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_eligibility_hardware_result.hardware_calculated_eligibility = hardware_calculated_eligibility.clone(); + _mining_eligibility_hardware_result.hardware_uptime_percentage = hardware_uptime_percentage.clone(); + // _mining_eligibility_hardware_result.hardware_block_audited = hardware_block_audited.clone(); + // _mining_eligibility_hardware_result.hardware_auditor_account_id = hardware_auditor_account_id.clone(); + } + }); + + info!("Checking mutated values"); + let fetched_mining_eligibility_hardware_result = >::get((mining_setting_hardware_id, mining_eligibility_hardware_id)); + if let Some(_mining_eligibility_hardware_result) = fetched_mining_eligibility_hardware_result { + info!("Latest field hardware_calculated_eligibility {:#?}", _mining_eligibility_hardware_result.hardware_calculated_eligibility); + info!("Latest field hardware_uptime_percentage {:#?}", _mining_eligibility_hardware_result.hardware_uptime_percentage); + // info!("Latest field hardware_block_audited {:#?}", _mining_eligibility_hardware_result.hardware_block_audited); + // info!("Latest field hardware_auditor_account_id {:#?}", _mining_eligibility_hardware_result.hardware_auditor_account_id); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_eligibility_hardware_result instance with the input params + let mining_eligibility_hardware_result_instance = MiningEligibilityHardwareResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hardware_calculated_eligibility: hardware_calculated_eligibility.clone(), + hardware_uptime_percentage: hardware_uptime_percentage.clone(), + // hardware_block_audited: hardware_block_audited.clone(), + // hardware_auditor_account_id: hardware_auditor_account_id.clone(), + }; + + >::insert( + (mining_setting_hardware_id, mining_eligibility_hardware_id), + &mining_eligibility_hardware_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_eligibility_hardware_result = >::get((mining_setting_hardware_id, mining_eligibility_hardware_id)); + if let Some(_mining_eligibility_hardware_result) = fetched_mining_eligibility_hardware_result { + info!("Inserted field hardware_calculated_eligibility {:#?}", _mining_eligibility_hardware_result.hardware_calculated_eligibility); + info!("Inserted field hardware_uptime_percentage {:#?}", _mining_eligibility_hardware_result.hardware_uptime_percentage); + // info!("Inserted field hardware_block_audited {:#?}", _mining_eligibility_hardware_result.hardware_block_audited); + // info!("Inserted field hardware_auditor_account_id {:#?}", _mining_eligibility_hardware_result.hardware_auditor_account_id); + } + } + + Self::deposit_event(RawEvent::MiningEligibilityHardwareResultSet( + sender, + mining_setting_hardware_id, + mining_eligibility_hardware_id, + hardware_calculated_eligibility, + hardware_uptime_percentage, + // hardware_block_audited, + // hardware_auditor_account_id + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_eligibility_to_configuration( + origin, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_hardware = > + ::exists_mining_setting_hardware(mining_setting_hardware_id).is_ok(); + ensure!(is_configuration_hardware, "configuration_hardware does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the eligibility to + ensure!( + >::is_mining_setting_hardware_owner(mining_setting_hardware_id, sender.clone()).is_ok(), + "Only the configuration_hardware owner can assign itself a eligibility" + ); + + Self::associate_token_eligibility_with_configuration(mining_eligibility_hardware_id, mining_setting_hardware_id) + .expect("Unable to associate eligibility with configuration"); + + // Ensure that the given mining_eligibility_hardware_id already exists + let token_eligibility = Self::mining_eligibility_hardware(mining_eligibility_hardware_id); + ensure!(token_eligibility.is_some(), "Invalid mining_eligibility_hardware_id"); + + // // Ensure that the eligibility is not already owned by a different configuration + // // Unassign the eligibility from any existing configuration since it may only be owned by one configuration + // >::remove(mining_eligibility_hardware_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_eligibility_hardware_id, mining_setting_hardware_id); + + Self::deposit_event(RawEvent::AssignedHardwareEligibilityToConfiguration(sender, mining_eligibility_hardware_id, mining_setting_hardware_id)); + } + } +} + +impl Module { + pub fn is_mining_eligibility_hardware_owner( + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_eligibility_hardware_owner(&mining_eligibility_hardware_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningEligibilityHardware" + ); + Ok(()) + } + + pub fn exists_mining_eligibility_hardware( + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + ) -> Result { + match Self::mining_eligibility_hardware(mining_eligibility_hardware_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningEligibilityHardware does not exist")), + } + } + + pub fn exists_mining_eligibility_hardware_result( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + ) -> Result<(), DispatchError> { + match Self::mining_eligibility_hardware_eligibility_results(( + mining_setting_hardware_id, + mining_eligibility_hardware_id, + )) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningEligibilityHardwareResult does not exist")), + } + } + + pub fn has_value_for_mining_eligibility_hardware_result_index( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_eligibility_hardware_result has a value that is defined"); + let fetched_mining_eligibility_hardware_result = + >::get((mining_setting_hardware_id, mining_eligibility_hardware_id)); + if let Some(_value) = fetched_mining_eligibility_hardware_result { + info!("Found value for mining_eligibility_hardware_result"); + return Ok(()); + } + warn!("No value for mining_eligibility_hardware_result"); + Err(DispatchError::Other("No value for mining_eligibility_hardware_result")) + } + + /// Only push the eligibility id onto the end of the vector if it does not already exist + pub fn associate_token_eligibility_with_configuration( + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given eligibility id + if let Some(configuration_eligibilities) = Self::hardware_config_eligibilities(mining_setting_hardware_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_hardware_id, + configuration_eligibilities + ); + let not_configuration_contains_eligibility = + !configuration_eligibilities.contains(&mining_eligibility_hardware_id); + ensure!(not_configuration_contains_eligibility, "Configuration already contains the given eligibility id"); + info!("Configuration id key exists but its vector value does not contain the given eligibility id"); + >::mutate(mining_setting_hardware_id, |v| { + if let Some(value) = v { + value.push(mining_eligibility_hardware_id); + } + }); + info!( + "Associated eligibility {:?} with configuration {:?}", + mining_eligibility_hardware_id, + mining_setting_hardware_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the \ + eligibility id {:?} to its vector value", + mining_setting_hardware_id, + mining_eligibility_hardware_id + ); + >::insert(mining_setting_hardware_id, &vec![mining_eligibility_hardware_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_eligibility_hardware_id() -> Result { + let mining_eligibility_hardware_id = Self::mining_eligibility_hardware_count(); + if mining_eligibility_hardware_id == ::max_value() { + return Err(DispatchError::Other("MiningEligibilityHardware count overflow")); + } + Ok(mining_eligibility_hardware_id) + } + + fn insert_mining_eligibility_hardware( + owner: &T::AccountId, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_eligibility_hardware: MiningEligibilityHardware, + ) { + // Create and store mining mining_eligibility_hardware + >::insert(mining_eligibility_hardware_id, mining_eligibility_hardware); + >::put(mining_eligibility_hardware_id + One::one()); + >::insert(mining_eligibility_hardware_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex) { + >::insert(mining_eligibility_hardware_id, to); + } +} diff --git a/pallets/mining/eligibility/hardware/src/mock.rs b/pallets/mining/eligibility/hardware/src/mock.rs new file mode 100644 index 00000000..de1cf0c4 --- /dev/null +++ b/pallets/mining/eligibility/hardware/src/mock.rs @@ -0,0 +1,158 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl mining_rates_hardware::Config for Test { + type Event = (); + type MiningRatesHardwareCategory1MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory2MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory3MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareIndex = u64; + type MiningRatesHardwareInsecure = u32; + // Mining Speed Boost Max Rates + type MiningRatesHardwareMaxHardware = u32; + // Mining Speed Boost Rate + type MiningRatesHardwareSecure = u32; +} +impl mining_sampling_hardware::Config for Test { + type Event = (); + type MiningSamplingHardwareIndex = u64; + type MiningSamplingHardwareSampleHardwareOnline = u64; +} +impl mining_setting_hardware::Config for Test { + type Event = (); + type MiningSettingHardwareDevEUI = u64; + // type MiningSettingHardwareType = + // MiningSettingHardwareTypes; + type MiningSettingHardwareID = u64; + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingHardwareIndex = u64; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure = bool; + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingHardwareType = Vec; +} +impl Config for Test { + type Event = (); + type MiningEligibilityHardwareCalculatedEligibility = u64; + type MiningEligibilityHardwareIndex = u64; + type MiningEligibilityHardwareUptimePercentage = u32; + // type MiningEligibilityHardwareAuditorAccountID = u64; +} + +pub type MiningEligibilityHardwareTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/eligibility/hardware/src/tests.rs b/pallets/mining/eligibility/hardware/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/eligibility/hardware/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/eligibility/proxy/Cargo.toml b/pallets/mining/eligibility/proxy/Cargo.toml new file mode 100644 index 00000000..feefad5f --- /dev/null +++ b/pallets/mining/eligibility/proxy/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = 'mining-eligibility-proxy' +version = '3.0.6' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'chrono/std', + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'module-primitives/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-timestamp/std', + 'pallet-transaction-payment/std', + 'pallet-treasury/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'account-set/std', + 'membership-supernodes/std', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +module-primitives = { version = '3.0.6', default-features = false, path = '../../../primitives' } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-timestamp = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default_features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-treasury = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +chrono = { version = '0.4.19', default_features = false } + +account-set = { path = '../../../../traits/account-set', default-features = false } +membership-supernodes = { path = '../../../membership/supernodes', default-features = false } + +[dev-dependencies] diff --git a/pallets/mining/eligibility/proxy/src/benchmarking.rs b/pallets/mining/eligibility/proxy/src/benchmarking.rs new file mode 100644 index 00000000..3c4298e5 --- /dev/null +++ b/pallets/mining/eligibility/proxy/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningEligibilityProxy; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningEligibilityProxy, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/eligibility/proxy/src/lib.rs b/pallets/mining/eligibility/proxy/src/lib.rs new file mode 100644 index 00000000..539c48e8 --- /dev/null +++ b/pallets/mining/eligibility/proxy/src/lib.rs @@ -0,0 +1,920 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use account_set::AccountSet; +use chrono::{ + NaiveDate, + NaiveDateTime, + Duration, +}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_error, + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::{ + ensure_signed, + ensure_root, +}; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + print, + traits::{ + AtLeast32Bit, + Bounded, + CheckedAdd, + Member, + One, + Printable, + }, + DispatchError, +}; +use sp_std::{ + convert::{ + TryFrom, + TryInto, + }, + prelude::*, +}; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + pallet_treasury::Config + + pallet_balances::Config + + pallet_timestamp::Config +{ + type Event: From> + Into<::Event>; + type Currency: Currency; + type Randomness: Randomness; + // Loosely coupled + type MembershipSource: AccountSet; + type MiningEligibilityProxyIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RewardsOfDay: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; +type Date = i64; + +#[derive(Encode, Decode, Debug, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive())] +pub struct MiningEligibilityProxy(pub [u8; 16]); + +#[derive(Encode, Decode, Debug, Default, Clone, PartialEq, TypeInfo)] +#[cfg_attr(feature = "std", derive())] +pub struct MiningEligibilityProxyRewardRequest { + pub proxy_claim_requestor_account_id: U, /* Supernode (proxy) account id requesting DHX rewards as proxy to + * distribute to its miners */ + pub proxy_claim_total_reward_amount: V, + pub proxy_claim_timestamp_redeemed: W, +} + +#[derive(Encode, Decode, Debug, Default, Clone, Eq, PartialEq, TypeInfo)] +#[cfg_attr(feature = "std", derive())] +// #[scale_info(skip_type_params(U))] +pub struct MiningEligibilityProxyClaimRewardeeData { + pub proxy_claim_rewardee_account_id: U, // Rewardee miner associated with supernode (proxy) account id + pub proxy_claim_reward_amount: V, // Reward in DHX tokens for specific rewardee miner + pub proxy_claim_start_date: W, // Start date associated with mining claim + pub proxy_claim_end_date: X, // End date covered by claim requesting mining rewards +} + +#[derive(Encode, Decode, Debug, Default, Clone, Eq, PartialEq, TypeInfo)] +#[cfg_attr(feature = "std", derive())] +pub struct RewardRequestorData { + pub mining_eligibility_proxy_id: U, + pub total_amt: V, + pub rewardee_count: W, + pub member_kind: X, + pub requested_date: Y, +} + +#[derive(Encode, Decode, Debug, Default, Clone, Eq, PartialEq, TypeInfo)] +#[cfg_attr(feature = "std", derive())] +pub struct RewardTransferData { + pub mining_eligibility_proxy_id: U, + pub total_amt: V, + pub rewardee_count: W, + pub member_kind: X, + pub requested_date: Y, +} + +#[derive(Encode, Decode, Debug, Default, Clone, Eq, PartialEq, TypeInfo)] +#[cfg_attr(feature = "std", derive())] +pub struct RewardDailyData { + pub mining_eligibility_proxy_id: U, + pub total_amt: V, + // Assume that the requestor is also the recipient + pub proxy_claim_requestor_account_id: W, + pub member_kind: X, + pub rewarded_date: Y, +} + +type RewardeeData = + MiningEligibilityProxyClaimRewardeeData<::AccountId, BalanceOf, Date, Date>; + +type RequestorData = RewardRequestorData< + ::MiningEligibilityProxyIndex, + BalanceOf, + u64, + u32, + ::Moment, +>; + +type TransferData = RewardTransferData< + ::MiningEligibilityProxyIndex, + BalanceOf, + u64, + u32, + ::Moment, +>; + +type DailyData = RewardDailyData< + ::MiningEligibilityProxyIndex, + BalanceOf, + ::AccountId, + u32, + Date, +>; + +decl_event!( + pub enum Event where + AccountId = ::AccountId, + ::MiningEligibilityProxyIndex, + BalanceOf = BalanceOf, + RewardeeData = RewardeeData, + RequestorData = RequestorData, + TransferData = TransferData, + DailyData = DailyData, + ::RewardsOfDay, + { + Created(AccountId, MiningEligibilityProxyIndex), + MiningEligibilityProxyRewardRequestSet( + AccountId, + MiningEligibilityProxyIndex, + BalanceOf, + Vec, + Date, + ), + MiningEligibilityProxyRewardRequestorSet( + AccountId, + RequestorData, + ), + MiningEligibilityProxyRewardTransferSet( + AccountId, + TransferData, + ), + RewardsPerDaySet( + Date, + DailyData, + ), + RewardsOfDayCalculated(RewardsOfDay), + IsAMember(AccountId), + /// Substrate-fixed total rewards for a given day has been updated. + TotalRewardsPerDayUpdated(BalanceOf, Date, AccountId), + CompletedReward(MiningEligibilityProxyIndex), + // IsPremining(bool, AccountId), + } +); + +decl_error! { + pub enum Error for Module { + NoneValue, + /// Some math operation overflowed + Overflow, + } +} + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningEligibilityProxy { + /// Stores all the mining_eligibility_proxys, key is the mining_eligibility_proxy id / index + pub MiningEligibilityProxys get(fn mining_eligibility_proxy): map hasher(opaque_blake2_256) T::MiningEligibilityProxyIndex => Option; + + /// Stores the total number of mining_eligibility_proxys. i.e. the next mining_eligibility_proxy index + pub MiningEligibilityProxyCount get(fn mining_eligibility_proxy_count): T::MiningEligibilityProxyIndex; + + /// Stores mining_eligibility_proxy owner + pub MiningEligibilityProxyOwners get(fn mining_eligibility_proxy_owner): map hasher(opaque_blake2_256) T::MiningEligibilityProxyIndex => Option; + + /// Stores mining_eligibility_proxy_reward_request + pub MiningEligibilityProxyRewardRequests get(fn mining_eligibility_proxy_eligibility_reward_requests): map hasher(opaque_blake2_256) T::MiningEligibilityProxyIndex => + Option, + ::Moment, + >>; + + /// Stores mining_eligibility_proxy_rewardees + pub MiningEligibilityProxyRewardees get(fn mining_eligibility_proxy_rewardees): map hasher(opaque_blake2_256) T::MiningEligibilityProxyIndex => + Option>>; + + /// Stores reward_requests for given rewardee + /// + /// requestor_acct_id > (reward_hash, total_amt, rewardee_count, member_kind, date) + /// where member_kind is either supernode_center 1 or supernode 2 or individual 3 + pub MiningEligibilityProxyRewardRequestors get(fn reward_requestors): + map hasher(opaque_blake2_256) T::AccountId => + Option::MiningEligibilityProxyIndex, + BalanceOf, + u64, + u32, + ::Moment, + >>>; + + /// Stores reward_transfers for given rewardee + /// IMPORTANT NOTE: REQUESTOR MAY DIFFER FROM REQUESTEE + /// HENCE DIFFERENT STORAGE FROM `reward_requestors` + /// + /// rewardee_acct_id > (reward_hash, total_amt, rewardee_count, member_kind, date) + pub MiningEligibilityProxyRewardTransfers get(fn reward_transfers): + map hasher(opaque_blake2_256) T::AccountId => + Option::MiningEligibilityProxyIndex, + BalanceOf, + u64, + u32, + ::Moment, + >>>; + + /// Substrate-fixed, value starts at 0 (additive identity) + pub TotalRewardsPerDay get(fn total_rewards_daily): + map hasher(opaque_blake2_256) Date => Option>; + + /// Stores accumulation of daily_rewards_sent on a given date + /// Note: Must store date/time value as the same for all rewards sent on same day + pub RewardsPerDay get(fn rewards_daily): + map hasher(opaque_blake2_256) Date => + Option::MiningEligibilityProxyIndex, + BalanceOf, + ::AccountId, + u32, + Date, + >>>; + + /// Stores a boolean value of `true` only at the end of calling extrinsic + /// `proxy_eligibility_claim` to signify that all the input validation has passed and + /// all information has been stored on-chain (i.e. if an error occurs midway through + /// `proxy_eligibility_claim` and for example some data is not stored in `TotalRewardsPerDay` + /// then this value will NOT be `true`) + pub MiningEligibilityProxyStatus get(fn proxy_status): + map hasher(opaque_blake2_256) T::MiningEligibilityProxyIndex => bool; + + pub IsPremine get(fn is_premine): bool; + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: ::Origin { + fn deposit_event() = default; + + // Toggle premine status to enable or disable daily reward limits in `is_supernode_claim_reasonable` + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_is_premine( + origin, + _is_premine: bool, + ) -> Result<(), DispatchError> { + let sender = ensure_root(origin)?; + + IsPremine::put(_is_premine.clone()); + + // Self::deposit_event(RawEvent::IsPremining( + // _is_premine.clone(), + // sender.clone(), + // )); + + Ok(()) + } + + /// Transfer tokens claimed by the Supernode Centre on behalf of a Supernode from the + /// on-chain DHX DAO unlocked reserves of the Treasury account to the Supernode Centre's address, + /// but only if the claimed amount is deemed reasonable and if there is valid data + /// provided about the recipient accounts associated with the Supernode. + #[weight = 10_000 + T::DbWeight::get().writes(6)] + pub fn proxy_eligibility_claim( + origin, + _proxy_claim_total_reward_amount: BalanceOf, + _proxy_claim_rewardees_data: Vec>, + ) -> Result<(), DispatchError> { + let sender = ensure_signed(origin)?; + + // get the current block & current date/time + let current_block = >::block_number(); + let requested_date = >::get(); + + // convert the current date/time to the start of the current day date/time. + // i.e. 21 Apr @ 1420 -> 21 Apr @ 0000 + + let requested_date_as_u64; + if let Some(_requested_date_as_u64) = TryInto::::try_into(requested_date).ok() { + requested_date_as_u64 = _requested_date_as_u64; + } else { + return Err(DispatchError::Other("Unable to convert Moment to i64 for requested_date")); + } + info!("requested_date_as_u64: {:?}", requested_date_as_u64.clone()); + + let requested_date_as_u64_secs = requested_date_as_u64.clone() / 1000u64; + // https://docs.rs/chrono/0.4.6/chrono/naive/struct.NaiveDateTime.html#method.from_timestamp + let sent_date = NaiveDateTime::from_timestamp(i64::try_from(requested_date_as_u64_secs).unwrap(), 0).date(); + info!("requested_date_as_u64_secs: {:?}", requested_date_as_u64_secs.clone()); + info!("sent_date: {:?}", sent_date.clone()); + + let sent_date_millis = sent_date.and_hms(0, 0, 0).timestamp() * 1000; + info!("sent_date_millis: {:?}", sent_date_millis.clone()); + info!("Timestamp sent Date: {:?}", sent_date); + + ensure!(Self::is_origin_whitelisted_member_supernodes(sender.clone()).is_ok(), "Only whitelisted Supernode account members may request proxy rewards"); + + let member_kind = T::MembershipSource::account_kind(sender.clone()); + info!("Requestor account kind: {:?}", member_kind.clone()); + + // TODO - determine whether we'll allow the recipient to be provided by the sender + // and how to restrict who the recipients are by membership or similar + let recipient_member_kind = T::MembershipSource::account_kind(sender.clone()); + info!("Recipient account kind: {:?}", recipient_member_kind.clone()); + + // Validate inputs (i.e. run `is_valid_reward_data` before we generate the `mining_eligibility_proxy_id` or insert any data in storage + // as we do not want it to panic if inputs are invalid and have have only partially added some data in storage, + // as we'd end up with numerous `mining_eligibility_proxy_id` with incomplete data. + + let is_premine = IsPremine::get(); + if is_premine != true { + ensure!(Self::is_supernode_claim_reasonable(_proxy_claim_total_reward_amount, sent_date_millis.clone()).is_ok(), "Supernode claim has been deemed unreasonable"); + } + + match Self::is_valid_reward_data(_proxy_claim_total_reward_amount.clone(), _proxy_claim_rewardees_data.clone()) { + Ok(_) => { + info!("Valid reward data"); + }, + Err(dispatch_error) => { + return Err(dispatch_error); + } + } + + // The rewards shall be distributed to the account that has locked the funds + let treasury_account_id: T::AccountId = >::account_id(); + // Only available in Substrate 3 is pot() + // let max_payout = pallet_treasury::Module::::pot(); + let max_payout = pallet_balances::Module::::usable_balance(treasury_account_id.clone()); + info!("Treasury account id: {:?}", treasury_account_id.clone()); + info!("Requestor to receive reward: {:?}", sender.clone()); + info!("Treasury balance max payout: {:?}", max_payout.clone()); + + // Validate inputs so the total_reward_amount is less than the max_payout + + let reward_to_pay = _proxy_claim_total_reward_amount; + + let reward_to_pay_as_u128; + if let Some(_reward_to_pay_as_u128) = TryInto::::try_into(reward_to_pay).ok() { + reward_to_pay_as_u128 = _reward_to_pay_as_u128; + } else { + return Err(DispatchError::Other("Unable to convert Balance to u128 for reward_to_pay")); + } + info!("reward_to_pay_as_u128: {:?}", reward_to_pay_as_u128.clone()); + + let max_payout_as_u128; + if let Some(_max_payout_as_u128) = TryInto::::try_into(max_payout).ok() { + max_payout_as_u128 = _max_payout_as_u128; + } else { + return Err(DispatchError::Other("Unable to convert Balance to u128 for max_payout")); + } + info!("max_payout_as_u128: {:?}", max_payout_as_u128.clone()); + + ensure!(reward_to_pay_as_u128 > 0u128, "Reward must be greater than zero"); + ensure!(max_payout_as_u128 > reward_to_pay_as_u128, "Reward cannot exceed treasury balance"); + + let mining_eligibility_proxy_id: T::MiningEligibilityProxyIndex; + + match Self::create(sender.clone()) { + Ok(proxy_id) => { + mining_eligibility_proxy_id = proxy_id.into(); + }, + Err(_) => { + return Err(DispatchError::Other("Proxy claim rewardees data missing")); + } + } + + info!("Transferring claim to proxy Supernode"); + + // Store Requestor of the reward + + let _rewardees_data_len: usize = _proxy_claim_rewardees_data.len(); + // Try to convert usize into u64 + // note: rewardees_data_len.clone().try_into().unwrap(), + let rewardees_data_len_to_try = TryInto::::try_into(_rewardees_data_len).ok(); + + if let Some(rewardees_data_len) = rewardees_data_len_to_try { + let reward_requestor_data: RequestorData = RewardRequestorData { + mining_eligibility_proxy_id: mining_eligibility_proxy_id.clone(), + total_amt: reward_to_pay.clone(), + rewardee_count: rewardees_data_len.clone(), + member_kind: member_kind.clone(), + requested_date: requested_date.clone(), + }; + + info!("Setting the proxy eligibility reward requestor"); + + Self::insert_mining_eligibility_proxy_reward_requestor( + &sender.clone(), + reward_requestor_data.clone(), + ); + + info!("Inserted reward Requestor: {:?}", sender.clone()); + info!("Inserted reward Requestor Data: {:?}", reward_requestor_data.clone()); + + info!("Treasury paying reward"); + + ::Currency::transfer( + &treasury_account_id, + &sender, + reward_to_pay.clone(), + ExistenceRequirement::KeepAlive + ); + + info!("Success paying the reward amount: {:?}", reward_to_pay.clone()); + + let reward_amount_item: DailyData = RewardDailyData { + mining_eligibility_proxy_id: mining_eligibility_proxy_id.clone(), + total_amt: reward_to_pay.clone(), + proxy_claim_requestor_account_id: sender.clone(), + member_kind: recipient_member_kind.clone(), + rewarded_date: sent_date_millis.clone(), + }; + + Self::insert_mining_eligibility_proxy_reward_daily( + &sent_date_millis.clone(), + reward_amount_item.clone(), + ); + + info!("Appended new rewards_per_day at Date: {:?}", sent_date_millis.clone()); + info!("Appended new rewards_per_day in storage item: {:?}", reward_amount_item.clone()); + + let rewards_per_day_retrieved = >::get( + sent_date_millis.clone(), + ); + info!("Retrieved new rewards_per_day storage item: {:?}", rewards_per_day_retrieved.clone()); + + // Update in storage the total rewards distributed so far for the current day + // so users may query state and have the latest calculated total returned. + match Self::total_rewards_daily(sent_date_millis.clone()) { + None => { + info!("Creating new total rewards entry for a given day"); + + >::insert( + sent_date_millis.clone(), + _proxy_claim_total_reward_amount.clone(), + ); + + info!("Created new total_rewards_daily at Date millis: {:?}", sent_date_millis.clone()); + info!("Creating new total_rewards_daily at Date with Amount: {:?}", _proxy_claim_total_reward_amount.clone()); + + // Emit event + Self::deposit_event(RawEvent::TotalRewardsPerDayUpdated( + _proxy_claim_total_reward_amount.clone(), + sent_date_millis.clone(), + sender.clone(), + )); + }, + Some(old_total_rewards_for_day) => { + info!("TotalRewardsPerDay entry mapping already exists for given day. Updating..."); + + // Add, handling overflow + let new_total_rewards_for_day = + old_total_rewards_for_day.checked_add(&_proxy_claim_total_reward_amount.clone()).ok_or(Error::::Overflow)?; + // Write the new value to storage + >::mutate( + sent_date_millis.clone(), + |reward_moment| { + if let Some(_reward_moment) = reward_moment { + *_reward_moment = new_total_rewards_for_day.clone(); + } + + info!("Updated total_rewards_daily at Date: {:?}", sent_date); + info!("Updated total_rewards_daily at Date. Existing Amount: {:?}", old_total_rewards_for_day.clone()); + info!("Updated total_rewards_daily at Date. Reward Amount: {:?}", _proxy_claim_total_reward_amount.clone()); + info!("Updated total_rewards_daily at Date. New Amount: {:?}", new_total_rewards_for_day.clone()); + }, + ); + + // Emit event + Self::deposit_event(RawEvent::TotalRewardsPerDayUpdated( + new_total_rewards_for_day.clone(), + sent_date_millis.clone(), + sender.clone(), + )); + } + } + + // This is only really necessary in addition to `RewardRequestorData` if + // the sender of the data is different from the recipient of the rewards + // (if this extrinsic function accepted a recipient argument other than the sender) + let reward_transfer_data: TransferData = RewardTransferData { + mining_eligibility_proxy_id: mining_eligibility_proxy_id.clone(), + total_amt: reward_to_pay.clone(), + rewardee_count: rewardees_data_len.clone(), + member_kind: member_kind.clone(), + requested_date: requested_date.clone(), + }; + + info!("Setting the proxy eligibility reward transfer"); + + Self::insert_mining_eligibility_proxy_reward_transfer( + &sender.clone(), + reward_transfer_data.clone(), + ); + + info!("Inserted proxy_reward_transfer for Sender: {:?}", sender.clone()); + info!("Inserted proxy_reward_transfer for Sender with Data: {:?}", reward_transfer_data.clone()); + + info!("Setting the proxy eligibility reward_request"); + + Self::set_mining_eligibility_proxy_eligibility_reward_request( + sender.clone(), + mining_eligibility_proxy_id.clone(), + _proxy_claim_total_reward_amount.clone(), + _proxy_claim_rewardees_data.clone(), + ); + + info!("Inserted proxy_eligibility_reward_request for Proxy ID: {:?}", mining_eligibility_proxy_id.clone()); + info!("Inserted proxy_eligibility_reward_request for Proxy ID with reward amount: {:?}", _proxy_claim_total_reward_amount.clone()); + info!("Inserted proxy_eligibility_reward_request for Proxy ID with _proxy_claim_rewardees_data: {:?}", _proxy_claim_rewardees_data.clone()); + + >::insert( + mining_eligibility_proxy_id.clone(), + true, + ); + + Self::deposit_event(RawEvent::CompletedReward( + mining_eligibility_proxy_id.clone(), + )); + + info!("Completed Transfer"); + + return Ok(()); + } else { + warn!("Unable to convert _proxy_claim_rewardees_data"); + return Err(DispatchError::Other("Unable to convert _proxy_claim_rewardees_data")); + } + } + } +} + +impl Module { + /// Create a new mining mining_eligibility_proxy + pub fn create(sender: T::AccountId) -> Result { + let mining_eligibility_proxy_id = Self::next_mining_eligibility_proxy_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_eligibility_proxy + let mining_eligibility_proxy = MiningEligibilityProxy(unique_id); + Self::insert_mining_eligibility_proxy(&sender, mining_eligibility_proxy_id, mining_eligibility_proxy); + + Self::deposit_event(RawEvent::Created(sender, mining_eligibility_proxy_id)); + return Ok(mining_eligibility_proxy_id); + } + + /// Checks whether the caller is a member of the set of account IDs provided by the + /// MembershipSource type. Emits an event if they are, and errors if not. + pub fn is_origin_whitelisted_member_supernodes(sender: T::AccountId) -> Result<(), DispatchError> { + let caller = sender.clone(); + + // Get the members from the `membership-supernodes` pallet + let members = T::MembershipSource::accounts(); + + // Check whether the caller is a member + // https://crates.parity.io/frame_support/traits/trait.Contains.html + ensure!(members.contains(&caller), DispatchError::Other("Not a member")); + + // If the previous call didn't error, then the caller is a member, so emit the event + Self::deposit_event(RawEvent::IsAMember(caller)); + + Ok(()) + } + + pub fn is_supernode_claim_reasonable( + proxy_claim_total_reward_amount: BalanceOf, + sent_date_millis: Date, + ) -> Result<(), DispatchError> { + let current_block = >::block_number(); + // block reward max is 5000 DHX per day until year 2023, so by 2024 we'd be up to + // 20000 * 4 * 365 = 29200000 block, then reduces to 4800 DHX per day, and so on per halving cycle. + // assume worse case scenario of only one supernode requesting + // rewards on behalf of users that collectively earnt the max DHX produced on that day. + let mut is_valid = 1; + let DAILY_WITHDRAWAL_LIMIT = 5000000000000000000000u128; + + let proxy_claim_total_reward_amount_as_u128 = + TryInto::::try_into(proxy_claim_total_reward_amount).ok().unwrap(); + + if let Some(total_rewards_per_day_retrieved) = >::get(sent_date_millis.clone()) { + let total_rewards_per_day_retrieved_as_u128 = + TryInto::::try_into(total_rewards_per_day_retrieved).ok().unwrap(); + info!("Retrieved new total_rewards_per_day_retrieved_as_u128 storage item: {:?}", total_rewards_per_day_retrieved_as_u128.clone()); + + let sum = total_rewards_per_day_retrieved_as_u128 + proxy_claim_total_reward_amount_as_u128; + // println!("sum {:#?}", sum); + info!("sum {:#?}", sum); + if sum > DAILY_WITHDRAWAL_LIMIT.clone().into() { + // println!("Sum exceeds daily withdrawal limit"); + warn!("Sum exceeds daily withdrawal limit"); + is_valid = 0; + } + } else if proxy_claim_total_reward_amount_as_u128 > DAILY_WITHDRAWAL_LIMIT.clone().into() { + // println!("Total reward amount exceeds daily withdrawal limit"); + warn!("Total reward amount exceeds daily withdrawal limit"); + is_valid = 0; + } + + // println!("proxy_claim_total_reward_amount {:#?}", proxy_claim_total_reward_amount); + // println!("proxy_claim_total_reward_amount_as_u128 {:#?}", proxy_claim_total_reward_amount_as_u128); + // println!("DAILY_WITHDRAWAL_LIMIT {:#?}", DAILY_WITHDRAWAL_LIMIT); + info!("proxy_claim_total_reward_amount {:#?}", proxy_claim_total_reward_amount); + info!("proxy_claim_total_reward_amount_as_u128 {:#?}", proxy_claim_total_reward_amount_as_u128); + info!("DAILY_WITHDRAWAL_LIMIT {:#?}", DAILY_WITHDRAWAL_LIMIT); + + if is_valid == 0 { + return Err(DispatchError::Other("Supernode claim has been deemed unreasonable")); + } + + Ok(()) + } + + pub fn is_valid_reward_data(_proxy_claim_total_reward_amount: BalanceOf, _proxy_claim_rewardees_data: Vec>) -> Result<(), DispatchError> { + ensure!(_proxy_claim_rewardees_data.len() > 0, "Rewardees data is invalid as no elements"); + + let current_timestamp = >::get(); + // convert the current date/time to the start of the current day date/time. + // i.e. 21 Apr @ 1420 -> 21 Apr @ 0000 + let current_timestamp_as_u64; + if let Some(_current_timestamp_as_u64) = TryInto::::try_into(current_timestamp).ok() { + current_timestamp_as_u64 = _current_timestamp_as_u64; + } else { + return Err(DispatchError::Other("Unable to convert Moment to u64 for current_timestamp")); + } + + let current_timestamp_as_u64_secs = current_timestamp_as_u64.clone() / 1000u64; + let current_date = + NaiveDateTime::from_timestamp(i64::try_from(current_timestamp_as_u64_secs).unwrap(), 0).date(); + + let mut rewardees_data_count = 0; + let mut is_valid = 1; + let MIN_COOLDOWN_PERIOD_DAYS: Duration = Duration::days(7); // 7 days @ 20k blocks produced per day + + // Iterate through all rewardees data + for (index, rewardees_data) in _proxy_claim_rewardees_data.iter().enumerate() { + rewardees_data_count += 1; + info!("rewardees_data_count {:#?}", rewardees_data_count); + + if let _proxy_claim_start_date = &rewardees_data.proxy_claim_start_date { + if let _proxy_claim_end_date = &rewardees_data.proxy_claim_end_date { + let proxy_claim_start_date_secs = _proxy_claim_start_date / 1000i64; + let proxy_claim_end_date_secs = _proxy_claim_end_date / 1000i64; + let proxy_claim_start_date = NaiveDateTime::from_timestamp(proxy_claim_start_date_secs, 0).date(); + let proxy_claim_end_date = NaiveDateTime::from_timestamp(proxy_claim_end_date_secs, 0).date(); + let claim_duration = proxy_claim_end_date.signed_duration_since(proxy_claim_start_date); + + if proxy_claim_end_date >= current_date { + warn!("invalid proxy_claim_end_date must be prior to current_date: {:#?}", proxy_claim_end_date); + is_valid = 0; + break; + } else if claim_duration <= MIN_COOLDOWN_PERIOD_DAYS { + warn!("unable to claim reward for lock duration less than cooldown period"); + is_valid = 0; + break; + } else { + continue; + } + } + } + } + if is_valid == 0 { + return Err(DispatchError::Other("Invalid rewardees data")); + } + + // Check that sum _proxy_claim_total_reward_amount equals sum of all the rewardee's proxy_claim_reward_amount + info!("Verifying that total reward amount requested equals sum of all rewardee data claim amounts"); + + let mut sum_reward_amounts = 0u128; + rewardees_data_count = 0; // Reset count + + // Iterate through all rewardees data + for (index, rewardees_data) in _proxy_claim_rewardees_data.iter().enumerate() { + rewardees_data_count += 1; + info!("rewardees_data_count {:#?}", rewardees_data_count); + + if let _proxy_claim_reward_amount = rewardees_data.proxy_claim_reward_amount.clone() { + let _proxy_claim_reward_amount_as_u128 = + TryInto::::try_into(_proxy_claim_reward_amount).ok().unwrap(); + sum_reward_amounts += _proxy_claim_reward_amount_as_u128; + } else { + warn!("unable to interpret proxy_claim_reward_amount"); + is_valid = 0; + break; + } + } + let _proxy_claim_total_reward_amount_as_u128 = + TryInto::::try_into(_proxy_claim_total_reward_amount).ok().unwrap(); + if sum_reward_amounts != _proxy_claim_total_reward_amount_as_u128 { + is_valid = 0; + return Err(DispatchError::Other("Inconsistent data provided as total reward amount requested does not equal sum of all rewardee data claim amounts")); + } + + Ok(()) + } + + pub fn is_mining_eligibility_proxy_owner( + mining_eligibility_proxy_id: T::MiningEligibilityProxyIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_eligibility_proxy_owner(&mining_eligibility_proxy_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningEligibilityProxy" + ); + Ok(()) + } + + pub fn exists_mining_eligibility_proxy( + mining_eligibility_proxy_id: T::MiningEligibilityProxyIndex, + ) -> Result<(), DispatchError> { + match Self::mining_eligibility_proxy(mining_eligibility_proxy_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningEligibilityProxy does not exist")), + } + } + + pub fn exists_mining_eligibility_proxy_reward_request( + mining_eligibility_proxy_id: T::MiningEligibilityProxyIndex, + ) -> Result<(), DispatchError> { + match Self::mining_eligibility_proxy_eligibility_reward_requests(mining_eligibility_proxy_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningEligibilityProxyRewardRequest does not exist")), + } + } + + pub fn has_value_for_mining_eligibility_proxy_reward_requestor_account_id( + requestor: &T::AccountId, + ) -> Result<(), DispatchError> { + info!( + "Checking if mining_eligibility_proxy_reward_requestor has a value for the given account id that is \ + defined" + ); + let fetched_mining_eligibility_proxy_reward_requestor = + >::get(requestor); + if let Some(_value) = fetched_mining_eligibility_proxy_reward_requestor { + info!("Found value for mining_eligibility_proxy_reward_requestor"); + return Ok(()); + } + warn!("No value for mining_eligibility_proxy_reward_requestor"); + Err(DispatchError::Other("No value for mining_eligibility_proxy_reward_requestor")) + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_eligibility_proxy_id() -> Result { + let mining_eligibility_proxy_id = Self::mining_eligibility_proxy_count(); + if mining_eligibility_proxy_id == ::max_value() { + return Err(DispatchError::Other("MiningEligibilityProxy count overflow")); + } + Ok(mining_eligibility_proxy_id) + } + + fn insert_mining_eligibility_proxy( + owner: &T::AccountId, + mining_eligibility_proxy_id: T::MiningEligibilityProxyIndex, + mining_eligibility_proxy: MiningEligibilityProxy, + ) { + // Create and store mining mining_eligibility_proxy + >::insert(mining_eligibility_proxy_id, mining_eligibility_proxy); + >::put(mining_eligibility_proxy_id + One::one()); + >::insert(mining_eligibility_proxy_id, owner.clone()); + } + + fn insert_mining_eligibility_proxy_reward_requestor( + requestor: &T::AccountId, + reward_requestor_data: RequestorData, + ) { + info!("Appending reward requestor data"); + + >::append(requestor.clone(), &reward_requestor_data.clone()); + + Self::deposit_event(RawEvent::MiningEligibilityProxyRewardRequestorSet( + requestor.clone(), + reward_requestor_data.clone(), + )); + } + + fn insert_mining_eligibility_proxy_reward_transfer(transfer: &T::AccountId, reward_transfer_data: TransferData) { + info!("Appending reward transfer data"); + + >::append(transfer.clone(), &reward_transfer_data.clone()); + + Self::deposit_event(RawEvent::MiningEligibilityProxyRewardTransferSet( + transfer.clone(), + reward_transfer_data.clone(), + )); + } + + fn insert_mining_eligibility_proxy_reward_daily(sent_date: &Date, reward_daily_data: DailyData) { + info!("Appending reward daily data"); + + >::append(sent_date.clone(), &reward_daily_data.clone()); + + Self::deposit_event(RawEvent::RewardsPerDaySet(sent_date.clone(), reward_daily_data.clone())); + } + + /// Set mining_eligibility_proxy_reward_request + fn set_mining_eligibility_proxy_eligibility_reward_request( + _proxy_claim_requestor_account_id: T::AccountId, + mining_eligibility_proxy_id: T::MiningEligibilityProxyIndex, + _proxy_claim_total_reward_amount: BalanceOf, + _proxy_claim_rewardees_data: Vec>, + ) { + // Ensure that the mining_eligibility_proxy_id whose config we want to change actually exists + let is_mining_eligibility_proxy = Self::exists_mining_eligibility_proxy(mining_eligibility_proxy_id); + + if !is_mining_eligibility_proxy.is_ok() { + warn!("Error no supernode exists with given id"); + } + + // Ensure that the caller is owner of the mining_eligibility_proxy_reward_request they are trying to change + Self::is_mining_eligibility_proxy_owner(mining_eligibility_proxy_id, _proxy_claim_requestor_account_id.clone()); + + let proxy_claim_requestor_account_id = _proxy_claim_requestor_account_id.clone(); + let proxy_claim_total_reward_amount = _proxy_claim_total_reward_amount.clone(); + let proxy_claim_rewardees_data = _proxy_claim_rewardees_data.clone(); + let current_block = >::block_number(); + let proxy_claim_block_redeemed = current_block; + let proxy_claim_timestamp_redeemed = >::get(); + + info!("Inserting reward requests"); + + // Create a new mining mining_eligibility_proxy_reward_request instance with the input params + let mining_eligibility_proxy_reward_request_instance = MiningEligibilityProxyRewardRequest { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + proxy_claim_requestor_account_id: proxy_claim_requestor_account_id.clone(), + proxy_claim_total_reward_amount: proxy_claim_total_reward_amount.clone(), + proxy_claim_timestamp_redeemed: proxy_claim_timestamp_redeemed.clone(), + }; + + >::insert( + mining_eligibility_proxy_id, + mining_eligibility_proxy_reward_request_instance.clone(), + ); + + info!("Insert rewardees {:#?}", proxy_claim_rewardees_data.clone()); + >::insert( + mining_eligibility_proxy_id, + proxy_claim_rewardees_data.clone(), + ); + + let proxy_claim_timestamp_redeemed_as_u64 = + TryInto::::try_into(proxy_claim_timestamp_redeemed).ok().unwrap(); + let proxy_claim_date_redeemed = NaiveDateTime::from_timestamp( + i64::try_from(proxy_claim_timestamp_redeemed_as_u64.clone() / 1000u64).unwrap(), + 0, + ) + .date(); + + let date_redeemed_millis = proxy_claim_date_redeemed.and_hms(0, 0, 0).timestamp() * 1000; + info!("proxy_claim_date_redeemed.timestamp {:#?}", date_redeemed_millis.clone()); + + Self::deposit_event(RawEvent::MiningEligibilityProxyRewardRequestSet( + proxy_claim_requestor_account_id, + mining_eligibility_proxy_id, + proxy_claim_total_reward_amount, + proxy_claim_rewardees_data, + date_redeemed_millis.clone(), + )); + } +} diff --git a/pallets/mining/eligibility/token/Cargo.toml b/pallets/mining/eligibility/token/Cargo.toml new file mode 100644 index 00000000..cc6daf47 --- /dev/null +++ b/pallets/mining/eligibility/token/Cargo.toml @@ -0,0 +1,57 @@ +[package] +name = 'mining-eligibility-token' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-rates-token/std', + 'mining-setting-token/std', + 'mining-sampling-token/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-token = { default-features = false, package = 'mining-setting-token', path = '../../../mining/setting/token' } +mining-rates-token = { default-features = false, package = 'mining-rates-token', path = '../../../mining/rates/token' } +mining-sampling-token = { default-features = false, package = 'mining-sampling-token', path = '../../../mining/sampling/token' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/eligibility/token/src/benchmarking.rs b/pallets/mining/eligibility/token/src/benchmarking.rs new file mode 100644 index 00000000..f6bcd7b1 --- /dev/null +++ b/pallets/mining/eligibility/token/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningEligibilityToken; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningEligibilityToken, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/eligibility/token/src/lib.rs b/pallets/mining/eligibility/token/src/lib.rs new file mode 100644 index 00000000..11da129e --- /dev/null +++ b/pallets/mining/eligibility/token/src/lib.rs @@ -0,0 +1,581 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_token; +use mining_rates_token; +use mining_sampling_token; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + mining_rates_token::Config + + mining_setting_token::Config + + mining_sampling_token::Config +{ + type Event: From> + Into<::Event>; + type MiningEligibilityTokenIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningEligibilityTokenCalculatedEligibility: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningEligibilityTokenLockedPercentage: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // type MiningEligibilityTokenAuditorAccountID: Parameter + Member + AtLeast32Bit + + // Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningEligibilityToken(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningEligibilityTokenResult { + pub token_calculated_eligibility: U, + pub token_locked_percentage: V, + /* pub token_block_audited: W, + * pub token_auditor_account_id: X, */ +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningEligibilityTokenIndex, + ::MiningEligibilityTokenCalculatedEligibility, + ::MiningEligibilityTokenLockedPercentage, + // ::MiningEligibilityTokenAuditorAccountID, + ::MiningSettingTokenIndex, + // ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_eligibility_token is created. (owner, mining_eligibility_token_id) + Created(AccountId, MiningEligibilityTokenIndex), + /// A mining_eligibility_token is transferred. (from, to, mining_eligibility_token_id) + Transferred(AccountId, AccountId, MiningEligibilityTokenIndex), + // MiningEligibilityTokenResultSet( + // AccountId, MiningSettingTokenIndex, MiningEligibilityTokenIndex, + // MiningEligibilityTokenCalculatedEligibility, MiningEligibilityTokenLockedPercentage, + // BlockNumber, MiningEligibilityTokenAuditorAccountID + // ), + MiningEligibilityTokenResultSet( + AccountId, MiningSettingTokenIndex, MiningEligibilityTokenIndex, + MiningEligibilityTokenCalculatedEligibility, MiningEligibilityTokenLockedPercentage + // BlockNumber, MiningEligibilityTokenAuditorAccountID + ), + /// A mining_eligibility_token is assigned to an mining_setting_token. + /// (owner of mining_token, mining_eligibility_token_id, mining_setting_token_id) + AssignedTokenEligibilityToConfiguration(AccountId, MiningEligibilityTokenIndex, MiningSettingTokenIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningEligibilityToken { + /// Stores all the mining_eligibility_tokens, key is the mining_eligibility_token id / index + pub MiningEligibilityTokens get(fn mining_eligibility_token): map hasher(opaque_blake2_256) T::MiningEligibilityTokenIndex => Option; + + /// Stores the total number of mining_eligibility_tokens. i.e. the next mining_eligibility_token index + pub MiningEligibilityTokenCount get(fn mining_eligibility_token_count): T::MiningEligibilityTokenIndex; + + /// Stores mining_eligibility_token owner + pub MiningEligibilityTokenOwners get(fn mining_eligibility_token_owner): map hasher(opaque_blake2_256) T::MiningEligibilityTokenIndex => Option; + + /// Stores mining_eligibility_token_result + pub MiningEligibilityTokenResults get(fn mining_eligibility_token_eligibility_results): map hasher(opaque_blake2_256) (T::MiningSettingTokenIndex, T::MiningEligibilityTokenIndex) => + Option>; + + /// Get mining_setting_token_id belonging to a mining_eligibility_token_id + pub TokenEligibilityConfiguration get(fn token_resulturation): map hasher(opaque_blake2_256) T::MiningEligibilityTokenIndex => Option; + + /// Get mining_eligibility_token_id's belonging to a mining_setting_token_id + pub TokenSettingEligibilities get(fn token_setting_eligibilities): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_eligibility_token + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_eligibility_token_id = Self::next_mining_eligibility_token_id()?; + + // Geneeligibility a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_eligibility_token + let mining_eligibility_token = MiningEligibilityToken(unique_id); + Self::insert_mining_eligibility_token(&sender, mining_eligibility_token_id, mining_eligibility_token); + + Self::deposit_event(RawEvent::Created(sender, mining_eligibility_token_id)); + } + + /// Transfer a mining_eligibility_token to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_eligibility_token_id: T::MiningEligibilityTokenIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_eligibility_token_owner(mining_eligibility_token_id) == Some(sender.clone()), "Only owner can transfer mining mining_eligibility_token"); + + Self::update_owner(&to, mining_eligibility_token_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_eligibility_token_id)); + } + + // FIXME - implement this and fix the type errors and uncomment it in the integration tests + // /// Calculate mining_eligibility_token_result + // pub fn calculate_mining_eligibility_token_result( + // origin, + // mining_setting_token_id: T::MiningSettingTokenIndex, + // mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + // ) { + // let sender = ensure_signed(origin)?; + + // // Ensure that the mining_eligibility_token_id whose config we want to change actually exists + // let is_mining_eligibility_token = Self::exists_mining_eligibility_token(mining_eligibility_token_id).is_ok(); + // ensure!(is_mining_eligibility_token, "MiningEligibilityToken does not exist"); + + // // Ensure that the caller is owner of the mining_eligibility_token_result they are trying to change + // ensure!(Self::mining_eligibility_token_owner(mining_eligibility_token_id) == Some(sender.clone()), "Only owner can set mining_eligibility_token_result"); + + // let DEFAULT_RATE_CONFIG = 0; + // let mut token_calculated_eligibility = 0u32.into(); + // let mut part_token_calculated_eligibility = 0u32.into(); + // let mut token_locked_percentage = 0u32.into(); + // let mut token_token_max_token = 0u32.into(); + + // let mut current_token_type; + // let mut current_token_lock_amount; + // // Get the config associated with the given configuration_token + // if let Some(configuration_token_setting) = >::mining_setting_token_token_settings(mining_setting_token_id) { + // if let token_type = configuration_token_setting.token_type { + // if token_type != "".to_string() { + // current_token_type = token_type.clone(); + + // if let token_lock_amount = configuration_token_setting.token_lock_amount { + // if token_lock_amount != 0 { + // current_token_lock_amount = token_lock_amount; + + // // Get list of all sampling_token_ids that correspond to the given mining_setting_token_id + // // of type MiningSamplingTokenIndex + // let sampling_token_ids = > + // ::token_setting_samplings(mining_setting_token_id); + + // let mut sample_count = 0; + // let mut current_sample_tokens_locked = 0; + // let mut current_token_rate = 0; + // let mut current_token_max_tokens = 0; + // let mut total = 0; + // // Iteratve through all the associated samples + // for (index, sampling_token_id) in sampling_token_ids.iter().enumerate() { + // // Retrieve the current corresponding sampling_token_setting + // // of type MiningSamplingTokenSetting + // if let Some(current_sampling_token_setting) = >::mining_samplings_token_samplings_configs( + // (mining_setting_token_id, sampling_token_id) + // ) { + // if let tokens_locked = current_sampling_token_setting.token_sample_locked_amount { + // sample_count += 1; + + // if tokens_locked == 0 { + // info!("Mining rate sample has nothing locked. Skipping to next sampling."); + // continue; + // } + // current_sample_tokens_locked = tokens_locked; + + // if let Some(token_rates_config) = >::mining_rates_token_rates_configs(DEFAULT_RATE_CONFIG) { + + // if current_token_type == "MXC".to_string() { + // current_token_rate = token_rates_config.token_token_mxc; + // } else if current_token_type == "IOTA".to_string() { + // current_token_rate = token_rates_config.token_token_iota; + // } else if current_token_type == "DOT".to_string() { + // current_token_rate = token_rates_config.token_token_dot; + // } + // current_token_max_tokens = token_rates_config.token_token_max_token; + // token_locked_percentage = current_token_rate * (current_sample_tokens_locked / current_token_lock_amount); + + // part_token_calculated_eligibility = part_token_calculated_eligibility + token_locked_percentage * current_token_max_tokens; + // } else { + // warn!("Mining rate config missing"); + // // break; + // return Err(DispatchError::Other("Mining rate config missing")); + // } + // } + // } + // } + // token_calculated_eligibility = part_token_calculated_eligibility / sample_count; + // info!("Calculate eligibilty based on average {:#?}", token_calculated_eligibility); + // } + // } + // } + // } + // } + + // // Check if a mining_eligibility_token_result already exists with the given mining_eligibility_token_id + // // to determine whether to insert new or mutate existing. + // if Self::has_value_for_mining_eligibility_token_result_index(mining_setting_token_id, mining_eligibility_token_id).is_ok() { + // info!("Mutating values"); + // >::mutate((mining_setting_token_id, mining_eligibility_token_id), |mining_eligibility_token_result| { + // if let Some(_mining_eligibility_token_result) = mining_eligibility_token_result { + // // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + // _mining_eligibility_token_result.token_calculated_eligibility = token_calculated_eligibility.clone(); + // _mining_eligibility_token_result.token_locked_percentage = token_locked_percentage.clone(); + // // _mining_eligibility_token_result.token_block_audited = token_block_audited.clone(); + // // _mining_eligibility_token_result.token_auditor_account_id = token_auditor_account_id.clone(); + // } + // }); + // info!("Checking mutated values"); + // let fetched_mining_eligibility_token_result = >::get((mining_setting_token_id, mining_eligibility_token_id)); + // if let Some(_mining_eligibility_token_result) = fetched_mining_eligibility_token_result { + // info!("Latest field token_calculated_eligibility {:#?}", _mining_eligibility_token_result.token_calculated_eligibility); + // info!("Latest field token_locked_percentage {:#?}", _mining_eligibility_token_result.token_locked_percentage); + // // info!("Latest field token_block_audited {:#?}", _mining_eligibility_token_result.token_block_audited); + // // info!("Latest field token_auditor_account_id {:#?}", _mining_eligibility_token_result.token_auditor_account_id); + // } + // } else { + // info!("Inserting values"); + + // // Create a new mining mining_eligibility_token_result instance with the input params + // let mining_eligibility_token_result_instance = MiningEligibilityTokenResult { + // // Since each parameter passed into the function is optional (i.e. `Option`) + // // we will assign a default value if a parameter value is not provided. + // token_calculated_eligibility: token_calculated_eligibility.clone(), + // token_locked_percentage: token_locked_percentage.clone(), + // // token_block_audited: token_block_audited.clone(), + // // token_auditor_account_id: token_auditor_account_id.clone(), + // }; + + // >::insert( + // (mining_setting_token_id, mining_eligibility_token_id), + // &mining_eligibility_token_result_instance + // ); + + // info!("Checking inserted values"); + // let fetched_mining_eligibility_token_result = >::get((mining_setting_token_id, mining_eligibility_token_id)); + // if let Some(_mining_eligibility_token_result) = fetched_mining_eligibility_token_result { + // info!("Inserted field token_calculated_eligibility {:#?}", _mining_eligibility_token_result.token_calculated_eligibility); + // info!("Inserted field token_locked_percentage {:#?}", _mining_eligibility_token_result.token_locked_percentage); + // // info!("Inserted field token_block_audited {:#?}", _mining_eligibility_token_result.token_block_audited); + // // info!("Inserted field token_auditor_account_id {:#?}", _mining_eligibility_token_result.token_auditor_account_id); + // } + // } + + // Self::deposit_event(RawEvent::MiningEligibilityTokenResultSet( + // sender, + // mining_setting_token_id, + // mining_eligibility_token_id, + // token_calculated_eligibility, + // token_locked_percentage, + // // token_block_audited, + // // token_auditor_account_id + // )); + // } + + /// Set mining_eligibility_token_result + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_eligibility_token_eligibility_result( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + _token_calculated_eligibility: Option, + _token_locked_percentage: Option, + // _token_block_audited: Option, + // _token_auditor_account_id: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_eligibility_token_id whose config we want to change actually exists + let is_mining_eligibility_token = Self::exists_mining_eligibility_token(mining_eligibility_token_id).is_ok(); + ensure!(is_mining_eligibility_token, "MiningEligibilityToken does not exist"); + + // Ensure that the caller is owner of the mining_eligibility_token_result they are trying to change + ensure!(Self::mining_eligibility_token_owner(mining_eligibility_token_id) == Some(sender.clone()), "Only owner can set mining_eligibility_token_result"); + + // TODO - adjust default eligibilitys + let token_calculated_eligibility = match _token_calculated_eligibility.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_locked_percentage = match _token_locked_percentage { + Some(value) => value, + None => 1u32.into() // Default + }; + // let token_block_audited = match _token_block_audited { + // Some(value) => value, + // None => 1u32.into() // Default + // }; + // let token_auditor_account_id = match _token_auditor_account_id { + // Some(value) => value, + // None => 1u32.into() // Default + // }; + + // Check if a mining_eligibility_token_result already exists with the given mining_eligibility_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_eligibility_token_result_index(mining_setting_token_id, mining_eligibility_token_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_token_id, mining_eligibility_token_id), |mining_eligibility_token_result| { + if let Some(_mining_eligibility_token_result) = mining_eligibility_token_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_eligibility_token_result.token_calculated_eligibility = token_calculated_eligibility.clone(); + _mining_eligibility_token_result.token_locked_percentage = token_locked_percentage.clone(); + // _mining_eligibility_token_result.token_block_audited = token_block_audited.clone(); + // _mining_eligibility_token_result.token_auditor_account_id = token_auditor_account_id.clone(); + } + }); + + info!("Checking mutated values"); + let fetched_mining_eligibility_token_result = >::get((mining_setting_token_id, mining_eligibility_token_id)); + if let Some(_mining_eligibility_token_result) = fetched_mining_eligibility_token_result { + info!("Latest field token_calculated_eligibility {:#?}", _mining_eligibility_token_result.token_calculated_eligibility); + info!("Latest field token_locked_percentage {:#?}", _mining_eligibility_token_result.token_locked_percentage); + // info!("Latest field token_block_audited {:#?}", _mining_eligibility_token_result.token_block_audited); + // info!("Latest field token_auditor_account_id {:#?}", _mining_eligibility_token_result.token_auditor_account_id); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_eligibility_token_result instance with the input params + let mining_eligibility_token_result_instance = MiningEligibilityTokenResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_calculated_eligibility: token_calculated_eligibility.clone(), + token_locked_percentage: token_locked_percentage.clone(), + // token_block_audited: token_block_audited.clone(), + // token_auditor_account_id: token_auditor_account_id.clone(), + }; + + >::insert( + (mining_setting_token_id, mining_eligibility_token_id), + &mining_eligibility_token_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_eligibility_token_result = >::get((mining_setting_token_id, mining_eligibility_token_id)); + if let Some(_mining_eligibility_token_result) = fetched_mining_eligibility_token_result { + info!("Inserted field token_calculated_eligibility {:#?}", _mining_eligibility_token_result.token_calculated_eligibility); + info!("Inserted field token_locked_percentage {:#?}", _mining_eligibility_token_result.token_locked_percentage); + // info!("Inserted field token_block_audited {:#?}", _mining_eligibility_token_result.token_block_audited); + // info!("Inserted field token_auditor_account_id {:#?}", _mining_eligibility_token_result.token_auditor_account_id); + } + } + + Self::deposit_event(RawEvent::MiningEligibilityTokenResultSet( + sender, + mining_setting_token_id, + mining_eligibility_token_id, + token_calculated_eligibility, + token_locked_percentage, + // token_block_audited, + // token_auditor_account_id + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_eligibility_to_configuration( + origin, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_token = > + ::exists_mining_setting_token(mining_setting_token_id).is_ok(); + ensure!(is_configuration_token, "configuration_token does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the eligibility to + ensure!( + >::is_mining_setting_token_owner(mining_setting_token_id, sender.clone()).is_ok(), + "Only the configuration_token owner can assign itself a eligibility" + ); + + Self::associate_token_eligibility_with_configuration(mining_eligibility_token_id, mining_setting_token_id) + .expect("Unable to associate eligibility with configuration"); + + // Ensure that the given mining_eligibility_token_id already exists + let token_eligibility = Self::mining_eligibility_token(mining_eligibility_token_id); + ensure!(token_eligibility.is_some(), "Invalid mining_eligibility_token_id"); + + // // Ensure that the eligibility is not already owned by a different configuration + // // Unassign the eligibility from any existing configuration since it may only be owned by one configuration + // >::remove(mining_eligibility_token_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_eligibility_token_id, mining_setting_token_id); + + Self::deposit_event(RawEvent::AssignedTokenEligibilityToConfiguration(sender, mining_eligibility_token_id, mining_setting_token_id)); + } + } +} + +impl Module { + pub fn is_mining_eligibility_token_owner( + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_eligibility_token_owner(&mining_eligibility_token_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningEligibilityToken" + ); + Ok(()) + } + + pub fn exists_mining_eligibility_token( + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + ) -> Result { + match Self::mining_eligibility_token(mining_eligibility_token_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningEligibilityToken does not exist")), + } + } + + pub fn exists_mining_eligibility_token_result( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + ) -> Result<(), DispatchError> { + match Self::mining_eligibility_token_eligibility_results((mining_setting_token_id, mining_eligibility_token_id)) + { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningEligibilityTokenResult does not exist")), + } + } + + pub fn has_value_for_mining_eligibility_token_result_index( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_eligibility_token_result has a value that is defined"); + let fetched_mining_eligibility_token_result = + >::get((mining_setting_token_id, mining_eligibility_token_id)); + if let Some(_value) = fetched_mining_eligibility_token_result { + info!("Found value for mining_eligibility_token_result"); + return Ok(()); + } + warn!("No value for mining_eligibility_token_result"); + Err(DispatchError::Other("No value for mining_eligibility_token_result")) + } + + /// Only push the eligibility id onto the end of the vector if it does not already exist + pub fn associate_token_eligibility_with_configuration( + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given eligibility id + if let Some(configuration_eligibilities) = Self::token_setting_eligibilities(mining_setting_token_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_token_id, + configuration_eligibilities + ); + let not_configuration_contains_eligibility = + !configuration_eligibilities.contains(&mining_eligibility_token_id); + ensure!(not_configuration_contains_eligibility, "Configuration already contains the given eligibility id"); + info!("Configuration id key exists but its vector value does not contain the given eligibility id"); + >::mutate(mining_setting_token_id, |v| { + if let Some(value) = v { + value.push(mining_eligibility_token_id); + } + }); + info!( + "Associated eligibility {:?} with configuration {:?}", + mining_eligibility_token_id, + mining_setting_token_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the \ + eligibility id {:?} to its vector value", + mining_setting_token_id, + mining_eligibility_token_id + ); + >::insert(mining_setting_token_id, &vec![mining_eligibility_token_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_eligibility_token_id() -> Result { + let mining_eligibility_token_id = Self::mining_eligibility_token_count(); + if mining_eligibility_token_id == ::max_value() { + return Err(DispatchError::Other("MiningEligibilityToken count overflow")); + } + Ok(mining_eligibility_token_id) + } + + fn insert_mining_eligibility_token( + owner: &T::AccountId, + mining_eligibility_token_id: T::MiningEligibilityTokenIndex, + mining_eligibility_token: MiningEligibilityToken, + ) { + // Create and store mining mining_eligibility_token + >::insert(mining_eligibility_token_id, mining_eligibility_token); + >::put(mining_eligibility_token_id + One::one()); + >::insert(mining_eligibility_token_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_eligibility_token_id: T::MiningEligibilityTokenIndex) { + >::insert(mining_eligibility_token_id, to); + } +} diff --git a/pallets/mining/eligibility/token/src/mock.rs b/pallets/mining/eligibility/token/src/mock.rs new file mode 100644 index 00000000..c462c6a1 --- /dev/null +++ b/pallets/mining/eligibility/token/src/mock.rs @@ -0,0 +1,151 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl mining_rates_token::Config for Test { + type Event = (); + type MiningRatesTokenIndex = u64; + type MiningRatesTokenMaxLoyalty = u32; + type MiningRatesTokenMaxToken = u32; + type MiningRatesTokenTokenDOT = u32; + type MiningRatesTokenTokenIOTA = u32; + type MiningRatesTokenTokenMXC = u32; +} +impl mining_sampling_token::Config for Test { + type Event = (); + type MiningSamplingTokenIndex = u64; + type MiningSamplingTokenSampleLockedAmount = u64; +} +impl mining_setting_token::Config for Test { + type Event = (); + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingTokenIndex = u64; + type MiningSettingTokenLockAmount = u64; + // Mining Speed Boost Token Mining Config + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingTokenType = Vec; +} +impl Config for Test { + type Event = (); + type MiningEligibilityTokenCalculatedEligibility = u64; + type MiningEligibilityTokenIndex = u64; + type MiningEligibilityTokenLockedPercentage = u32; + // type MiningEligibilityTokenAuditorAccountID = u64; +} + +pub type MiningEligibilityTokenTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/eligibility/token/src/tests.rs b/pallets/mining/eligibility/token/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/eligibility/token/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/execution/token/Cargo.toml b/pallets/mining/execution/token/Cargo.toml new file mode 100644 index 00000000..03ce78c2 --- /dev/null +++ b/pallets/mining/execution/token/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = 'mining-execution-token' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-setting-token/std', + 'mining-eligibility-token/std', + 'mining-rates-token/std', + 'mining-sampling-token/std', + 'mining-claims-token/std', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-token = { default-features = false, package = 'mining-setting-token', path = '../../../mining/setting/token' } +mining-eligibility-token = { default-features = false, package = 'mining-eligibility-token', path = '../../../mining/eligibility/token' } +mining-rates-token = { default-features = false, package = 'mining-rates-token', path = '../../../mining/rates/token' } +mining-sampling-token = { default-features = false, package = 'mining-sampling-token', path = '../../../mining/sampling/token' } +mining-claims-token = { default-features = false, package = 'mining-claims-token', path = '../../../mining/claims/token' } + +[dev-dependencies] diff --git a/pallets/mining/execution/token/src/benchmarking.rs b/pallets/mining/execution/token/src/benchmarking.rs new file mode 100644 index 00000000..13f139ad --- /dev/null +++ b/pallets/mining/execution/token/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningExecutionToken; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningExecutionToken, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/execution/token/src/lib.rs b/pallets/mining/execution/token/src/lib.rs new file mode 100644 index 00000000..a9e087c3 --- /dev/null +++ b/pallets/mining/execution/token/src/lib.rs @@ -0,0 +1,566 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_claims_token; +use mining_setting_token; +use mining_eligibility_token; +use mining_rates_token; +use mining_sampling_token; + +// #[cfg(test)] +// mod mock; + +// #[cfg(test)] +// mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + mining_setting_token::Config + + mining_eligibility_token::Config + + mining_rates_token::Config + + mining_sampling_token::Config + + mining_claims_token::Config +{ + type Event: From> + Into<::Event>; + type MiningExecutionTokenIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // type MiningExecutionTokenExecutorAccountID: Parameter + // + Member + // + AtLeast32Bit + // + Bounded + // + Default + // + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningExecutionToken(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningExecutionTokenExecutionResult { + pub token_execution_executor_account_id: U, + pub token_execution_started_block: V, + pub token_execution_ended_block: W, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningExecutionTokenIndex, + // ::MiningExecutionTokenExecutorAccountID, + ::MiningSettingTokenIndex, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_execution_token is created. (owner, mining_execution_token_id) + Created(AccountId, MiningExecutionTokenIndex), + /// A mining_execution_token is transferred. (from, to, mining_execution_token_id) + Transferred(AccountId, AccountId, MiningExecutionTokenIndex), + MiningExecutionTokenExecutionResultSet( + AccountId, MiningSettingTokenIndex, MiningExecutionTokenIndex, + AccountId, BlockNumber, BlockNumber + ), + /// A mining_execution_token is assigned to an mining_token. + /// (owner of mining_token, mining_execution_token_id, mining_setting_token_id) + AssignedTokenExecutionToConfiguration(AccountId, MiningExecutionTokenIndex, MiningSettingTokenIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningExecutionToken { + /// Stores all the mining_execution_tokens, key is the mining_execution_token id / index + pub MiningExecutionTokens get(fn mining_execution_token): map hasher(opaque_blake2_256) T::MiningExecutionTokenIndex => Option; + + /// Stores the total number of mining_execution_tokens. i.e. the next mining_execution_token index + pub MiningExecutionTokenCount get(fn mining_execution_token_count): T::MiningExecutionTokenIndex; + + /// Stores mining_execution_token owner + pub MiningExecutionTokenOwners get(fn mining_execution_token_owner): map hasher(opaque_blake2_256) T::MiningExecutionTokenIndex => Option; + + /// Stores mining_execution_token_execution_result + pub MiningExecutionTokenExecutionResults get(fn mining_execution_token_execution_results): map hasher(opaque_blake2_256) (T::MiningSettingTokenIndex, T::MiningExecutionTokenIndex) => + Option>; + + /// Get mining_setting_token_id belonging to a mining_execution_token_id + pub TokenExecutionConfiguration get(fn token_execution_configuration): map hasher(opaque_blake2_256) T::MiningExecutionTokenIndex => Option; + + /// Get mining_execution_token_id's belonging to a mining_setting_token_id + pub TokenSettingExecution get(fn token_setting_execution): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_execution_token + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_execution_token_id = Self::next_mining_execution_token_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_execution_token + let mining_execution_token = MiningExecutionToken(unique_id); + Self::insert_mining_execution_token(&sender, mining_execution_token_id, mining_execution_token); + + Self::deposit_event(RawEvent::Created(sender, mining_execution_token_id)); + } + + /// Transfer a mining_execution_token to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_execution_token_id: T::MiningExecutionTokenIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_execution_token_owner(mining_execution_token_id) == Some(sender.clone()), "Only owner can transfer mining mining_execution_token"); + + Self::update_owner(&to, mining_execution_token_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_execution_token_id)); + } + + /// Set mining_execution_token_execution_result + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_execution_token_execution_result( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_execution_token_id: T::MiningExecutionTokenIndex, + _token_execution_started_block: Option, + _token_execution_ended_block: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_execution_token_id whose config we want to change actually exists + let is_mining_execution_token = Self::exists_mining_execution_token(mining_execution_token_id).is_ok(); + ensure!(is_mining_execution_token, "MiningExecutionToken does not exist"); + + // Ensure that the caller is owner of the mining_execution_token_execution_result they are trying to change + ensure!(Self::mining_execution_token_owner(mining_execution_token_id) == Some(sender.clone()), "Only owner can set mining_execution_token_execution_result"); + + // Check that only allow the owner of the configuration that the execution belongs to call this extrinsic to set and execute + ensure!( + >::is_mining_setting_token_owner( + mining_setting_token_id, sender.clone() + ).is_ok(), + "Only the configuration_token owner can execute their associated execution" + ); + + // TODO - adjust defaults + let token_execution_executor_account_id = sender.clone(); + let token_execution_started_block = match _token_execution_started_block.clone() { + Some(value) => value, + None => >::block_number() + }; + let token_execution_ended_block = match _token_execution_ended_block { + Some(value) => value, + None => >::block_number() + 1u32.into() // Default + }; + + // FIXME + // // Ensure that the associated token configuration has a token_execution_started_block > current_block + // let is_token_execution_started_block_greater_than_current_block = Self::token_execution_started_block_greater_than_current_block(mining_execution_token_id, mining_setting_token_id).is_ok(); + // ensure!(is_token_execution_started_block_greater_than_current_block, "token execution does not have a token_execution_started_block > current_block"); + + // FIXME + // // Ensure that the associated token configuration has a token_lock_interval_blocks > token_lock_min_blocks + // let is_token_lock_interval_blocks_greater_than_token_lock_min_blocks = Self::token_lock_interval_blocks_greater_than_token_lock_min_blocks(mining_execution_token_id, mining_setting_token_id).is_ok(); + // ensure!(is_token_lock_interval_blocks_greater_than_token_lock_min_blocks, "token configuration does not have a token_lock_interval_blocks > token_lock_min_blocks"); + + // Ensure that the associated token configuration has a token_lock_amount > token_lock_min_amount + let is_token_lock_amount_greater_than_token_lock_min_amount = Self::token_lock_amount_greater_than_token_lock_min_amount(mining_execution_token_id, mining_setting_token_id).is_ok(); + ensure!(is_token_lock_amount_greater_than_token_lock_min_amount, "token configuration does not have a token_lock_amount > token_lock_min_amount"); + + // Check if a mining_execution_token_execution_result already exists with the given mining_execution_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_execution_token_execution_result_index(mining_setting_token_id, mining_execution_token_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_token_id, mining_execution_token_id), |mining_execution_token_execution_result| { + if let Some(_mining_execution_token_execution_result) = mining_execution_token_execution_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_execution_token_execution_result.token_execution_executor_account_id = token_execution_executor_account_id.clone(); + _mining_execution_token_execution_result.token_execution_started_block = token_execution_started_block.clone(); + _mining_execution_token_execution_result.token_execution_ended_block = token_execution_ended_block.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_execution_token_execution_result = >::get((mining_setting_token_id, mining_execution_token_id)); + if let Some(_mining_execution_token_execution_result) = fetched_mining_execution_token_execution_result { + info!("Latest field token_execution_executor_account_id {:#?}", _mining_execution_token_execution_result.token_execution_executor_account_id); + info!("Latest field token_execution_started_block {:#?}", _mining_execution_token_execution_result.token_execution_started_block); + info!("Latest field token_execution_ended_block {:#?}", _mining_execution_token_execution_result.token_execution_ended_block); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_execution_token_execution_result instance with the input params + let mining_execution_token_execution_result_instance = MiningExecutionTokenExecutionResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_execution_executor_account_id: token_execution_executor_account_id.clone(), + token_execution_started_block: token_execution_started_block.clone(), + token_execution_ended_block: token_execution_ended_block.clone(), + }; + + >::insert( + (mining_setting_token_id, mining_execution_token_id), + &mining_execution_token_execution_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_execution_token_execution_result = >::get((mining_setting_token_id, mining_execution_token_id)); + if let Some(_mining_execution_token_execution_result) = fetched_mining_execution_token_execution_result { + info!("Inserted field token_execution_executor_account_id {:#?}", _mining_execution_token_execution_result.token_execution_executor_account_id); + info!("Inserted field token_execution_started_block {:#?}", _mining_execution_token_execution_result.token_execution_started_block); + info!("Inserted field token_execution_ended_block {:#?}", _mining_execution_token_execution_result.token_execution_ended_block); + } + } + + Self::deposit_event(RawEvent::MiningExecutionTokenExecutionResultSet( + sender.clone(), + mining_setting_token_id, + mining_execution_token_id, + token_execution_executor_account_id.clone(), + token_execution_started_block, + token_execution_ended_block, + )); + + + + if Self::execution( + sender.clone(), + mining_setting_token_id, + mining_execution_token_id, + token_execution_executor_account_id.clone(), + token_execution_started_block, + token_execution_ended_block, + ).is_ok() { + info!("Executed"); + } else { + warn!("Cannot execute"); + } + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_execution_to_configuration( + origin, + mining_execution_token_id: T::MiningExecutionTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_token = > + ::exists_mining_setting_token(mining_setting_token_id).is_ok(); + ensure!(is_configuration_token, "configuration_token does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the execution to + ensure!( + >::is_mining_setting_token_owner(mining_setting_token_id, sender.clone()).is_ok(), + "Only the configuration_token owner can assign itself a execution" + ); + + Self::associate_token_execution_with_configuration(mining_execution_token_id, mining_setting_token_id) + .expect("Unable to associate execution with configuration"); + + // Ensure that the given mining_execution_token_id already exists + let token_execution = Self::mining_execution_token(mining_execution_token_id); + ensure!(token_execution.is_some(), "Invalid mining_execution_token_id"); + + // // Ensure that the execution is not already owned by a different configuration + // // Unassign the execution from any existing configuration since it may only be owned by one configuration + // >::remove(mining_execution_token_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_execution_token_id, mining_setting_token_id); + + Self::deposit_event(RawEvent::AssignedTokenExecutionToConfiguration(sender, mining_execution_token_id, mining_setting_token_id)); + } + } +} + +impl Module { + pub fn is_mining_execution_token_owner( + mining_execution_token_id: T::MiningExecutionTokenIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_execution_token_owner(&mining_execution_token_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningExecutionToken" + ); + Ok(()) + } + + pub fn exists_mining_execution_token( + mining_execution_token_id: T::MiningExecutionTokenIndex, + ) -> Result { + match Self::mining_execution_token(mining_execution_token_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningExecutionToken does not exist")), + } + } + + pub fn exists_mining_execution_token_execution_result( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_execution_token_id: T::MiningExecutionTokenIndex, + ) -> Result<(), DispatchError> { + match Self::mining_execution_token_execution_results((mining_setting_token_id, mining_execution_token_id)) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningExecutionTokenExecutionResult does not exist")), + } + } + + // Check that the token execution has a token_execution_started_block > current_block + pub fn token_execution_started_block_greater_than_current_block( + mining_execution_token_id: T::MiningExecutionTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + // Check that the extrinsic call is made after the start date defined in the provided configuration + + let current_block = >::block_number(); + // Get the config associated with the given configuration_token + if let Some(configuration_token_setting) = + >::mining_setting_token_token_settings(mining_setting_token_id) + { + if let _token_lock_start_block = configuration_token_setting.token_lock_start_block { + ensure!( + current_block > _token_lock_start_block, + "Execution may not be made until after the start block of the lock period in the configuration" + ); + Ok(()) + } else { + return Err(DispatchError::Other("Cannot find token_setting start_date associated with the execution")); + } + } else { + return Err(DispatchError::Other("Cannot find token_setting associated with the execution")); + } + } + + // Check that the associated token configuration has a token_lock_interval_blocks > token_lock_min_blocks + pub fn token_lock_interval_blocks_greater_than_token_lock_min_blocks( + mining_execution_token_id: T::MiningExecutionTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + if let Some(configuration_token) = + >::mining_setting_token_token_settings((mining_setting_token_id)) + { + if let Some(cooldown_configuration_token) = + >::mining_setting_token_token_cooldown_configs((mining_setting_token_id)) + { + if let token_lock_interval_blocks = configuration_token.token_lock_interval_blocks { + if let token_lock_min_blocks = cooldown_configuration_token.token_lock_min_blocks { + ensure!( + token_lock_interval_blocks > token_lock_min_blocks, + "Lock period must be longer than the minimum lock period of the cooldown config. Cannot \ + execute." + ); + Ok(()) + } else { + return Err(DispatchError::Other( + "Cannot find token_setting with token_lock_min_blocks associated with the execution", + )); + } + } else { + return Err(DispatchError::Other( + "Cannot find token_setting with token_lock_interval_blocks associated with the execution", + )); + } + } else { + return Err(DispatchError::Other("Cannot find token_cooldown_config associated with the execution")); + } + } else { + return Err(DispatchError::Other("Cannot find token_setting associated with the execution")); + } + } + + // Check that the associated token configuration has a token_lock_amount > token_lock_min_amount + pub fn token_lock_amount_greater_than_token_lock_min_amount( + mining_execution_token_id: T::MiningExecutionTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + if let Some(configuration_token) = + >::mining_setting_token_token_settings((mining_setting_token_id)) + { + if let Some(cooldown_configuration_token) = + >::mining_setting_token_token_cooldown_configs((mining_setting_token_id)) + { + if let locked_amount = configuration_token.token_lock_amount { + if let lock_min_amount = cooldown_configuration_token.token_lock_min_amount { + ensure!( + locked_amount > lock_min_amount, + "Locked amount must be larger than the minimum locked amount of the cooldown config. \ + Cannot execute." + ); + Ok(()) + } else { + return Err(DispatchError::Other( + "Cannot find token_setting with token_lock_min_blocks associated with the execution", + )); + } + } else { + return Err(DispatchError::Other( + "Cannot find token_setting with token_lock_interval_blocks associated with the execution", + )); + } + } else { + return Err(DispatchError::Other("Cannot find token_cooldown_config associated with the execution")); + } + } else { + return Err(DispatchError::Other("Cannot find token_setting associated with the execution")); + } + } + + pub fn execution( + sender: T::AccountId, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_execution_token_id: T::MiningExecutionTokenIndex, + _token_execution_executor_account_id: T::AccountId, + _token_execution_started_block: T::BlockNumber, + _token_execution_ended_block: T::BlockNumber, + ) -> Result<(), DispatchError> { + return Ok(()); + + // TODO - Lock the token_lock_amount for the token_lock_interval_blocks using the Balances module + + // TODO - Setup a function in on_finalize that automatically checks through all the accounts that have + // successfully been locked, whether it is the end of their cooldown period and if so sample the balance, to + // determine their elegibility, and perform the claim for reward and unlock their tokens + // TODO - Update tests for the above + } + + pub fn has_value_for_mining_execution_token_execution_result_index( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_execution_token_id: T::MiningExecutionTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_execution_token_execution_result has a value that is defined"); + let fetched_mining_execution_token_execution_result = + >::get((mining_setting_token_id, mining_execution_token_id)); + if let Some(_value) = fetched_mining_execution_token_execution_result { + info!("Found value for mining_execution_token_execution_result"); + return Ok(()); + } + warn!("No value for mining_execution_token_execution_result"); + Err(DispatchError::Other("No value for mining_execution_token_execution_result")) + } + + /// Only push the execution id onto the end of the vector if it does not already exist + pub fn associate_token_execution_with_configuration( + mining_execution_token_id: T::MiningExecutionTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given execution id + if let Some(configuration_execution) = Self::token_setting_execution(mining_setting_token_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_token_id, + configuration_execution + ); + let not_configuration_contains_execution = !configuration_execution.contains(&mining_execution_token_id); + ensure!(not_configuration_contains_execution, "Configuration already contains the given execution id"); + info!("Configuration id key exists but its vector value does not contain the given execution id"); + >::mutate(mining_setting_token_id, |v| { + if let Some(value) = v { + value.push(mining_execution_token_id); + } + }); + info!( + "Associated execution {:?} with configuration {:?}", + mining_execution_token_id, + mining_setting_token_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the \ + execution id {:?} to its vector value", + mining_setting_token_id, + mining_execution_token_id + ); + >::insert(mining_setting_token_id, &vec![mining_execution_token_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_execution_token_id() -> Result { + let mining_execution_token_id = Self::mining_execution_token_count(); + if mining_execution_token_id == ::max_value() { + return Err(DispatchError::Other("MiningExecutionToken count overflow")); + } + Ok(mining_execution_token_id) + } + + fn insert_mining_execution_token( + owner: &T::AccountId, + mining_execution_token_id: T::MiningExecutionTokenIndex, + mining_execution_token: MiningExecutionToken, + ) { + // Create and store mining mining_execution_token + >::insert(mining_execution_token_id, mining_execution_token); + >::put(mining_execution_token_id + One::one()); + >::insert(mining_execution_token_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_execution_token_id: T::MiningExecutionTokenIndex) { + >::insert(mining_execution_token_id, to); + } +} diff --git a/pallets/mining/lodgements/hardware/Cargo.toml b/pallets/mining/lodgements/hardware/Cargo.toml new file mode 100644 index 00000000..6de357f7 --- /dev/null +++ b/pallets/mining/lodgements/hardware/Cargo.toml @@ -0,0 +1,61 @@ +[package] +name = 'mining-lodgements-hardware' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-setting-hardware/std', + 'mining-eligibility-hardware/std', + 'mining-rates-hardware/std', + 'mining-sampling-hardware/std', + 'mining-claims-hardware/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-claims-hardware = { default-features = false, package = 'mining-claims-hardware', path = '../../../mining/claims/hardware' } +mining-setting-hardware = { default-features = false, package = 'mining-setting-hardware', path = '../../../mining/setting/hardware' } +mining-eligibility-hardware = { default-features = false, package = 'mining-eligibility-hardware', path = '../../../mining/eligibility/hardware' } +mining-rates-hardware = { default-features = false, package = 'mining-rates-hardware', path = '../../../mining/rates/hardware' } +mining-sampling-hardware = { default-features = false, package = 'mining-sampling-hardware', path = '../../../mining/sampling/hardware' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/lodgements/hardware/src/benchmarking.rs b/pallets/mining/lodgements/hardware/src/benchmarking.rs new file mode 100644 index 00000000..339f2b20 --- /dev/null +++ b/pallets/mining/lodgements/hardware/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningLodgementsHardware; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningLodgementsHardware, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/lodgements/hardware/src/lib.rs b/pallets/mining/lodgements/hardware/src/lib.rs new file mode 100644 index 00000000..acd9171e --- /dev/null +++ b/pallets/mining/lodgements/hardware/src/lib.rs @@ -0,0 +1,449 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_hardware; +use mining_eligibility_hardware; +use mining_rates_hardware; +use mining_sampling_hardware; +use mining_claims_hardware; + +// #[cfg(test)] +// mod mock; + +// #[cfg(test)] +// mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + mining_setting_hardware::Config + + mining_eligibility_hardware::Config + + mining_rates_hardware::Config + + mining_sampling_hardware::Config + + mining_claims_hardware::Config +{ + type Event: From> + Into<::Event>; + type MiningLodgementsHardwareIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningClaimsHardware(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningClaimsHardwareClaimResult { + pub hardware_claim_amount: U, + pub hardware_claim_block_redeemed: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningClaimsHardwareIndex, + ::MiningClaimsHardwareClaimAmount, + ::MiningSettingHardwareIndex, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_claims_hardware is created. (owner, mining_claims_hardware_id) + Created(AccountId, MiningClaimsHardwareIndex), + /// A mining_claims_hardware is transferred. (from, to, mining_claims_hardware_id) + Transferred(AccountId, AccountId, MiningClaimsHardwareIndex), + MiningClaimsHardwareClaimResultSet( + AccountId, MiningSettingHardwareIndex, MiningClaimsHardwareIndex, + MiningClaimsHardwareClaimAmount, BlockNumber + ), + /// A mining_claims_hardware is assigned to an mining_hardware. + /// (owner of mining_hardware, mining_claims_hardware_id, mining_setting_hardware_id) + AssignedHardwareClaimToConfiguration(AccountId, MiningClaimsHardwareIndex, MiningSettingHardwareIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningClaimsHardware { + /// Stores all the mining_claims_hardwares, key is the mining_claims_hardware id / index + pub MiningClaimsHardwares get(fn mining_claims_hardware): map hasher(opaque_blake2_256) T::MiningClaimsHardwareIndex => Option; + + /// Stores the total number of mining_claims_hardwares. i.e. the next mining_claims_hardware index + pub MiningClaimsHardwareCount get(fn mining_claims_hardware_count): T::MiningClaimsHardwareIndex; + + /// Stores mining_claims_hardware owner + pub MiningClaimsHardwareOwners get(fn mining_claims_hardware_owner): map hasher(opaque_blake2_256) T::MiningClaimsHardwareIndex => Option; + + /// Stores mining_claims_hardware_claims_result + pub MiningClaimsHardwareClaimResults get(fn mining_claims_hardware_claims_results): map hasher(opaque_blake2_256) (T::MiningSettingHardwareIndex, T::MiningClaimsHardwareIndex) => + Option>; + + /// Get mining_setting_hardware_id belonging to a mining_claims_hardware_id + pub HardwareClaimConfiguration get(fn hardware_claim_configuration): map hasher(opaque_blake2_256) T::MiningClaimsHardwareIndex => Option; + + /// Get mining_claims_hardware_id's belonging to a mining_setting_hardware_id + pub HardwareSettingClaims get(fn hardware_config_claims): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_claims_hardware + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_claims_hardware_id = Self::next_mining_claims_hardware_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_claims_hardware + let mining_claims_hardware = MiningClaimsHardware(unique_id); + Self::insert_mining_claims_hardware(&sender, mining_claims_hardware_id, mining_claims_hardware); + + Self::deposit_event(RawEvent::Created(sender, mining_claims_hardware_id)); + } + + /// Transfer a mining_claims_hardware to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_claims_hardware_id: T::MiningClaimsHardwareIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_claims_hardware_owner(mining_claims_hardware_id) == Some(sender.clone()), "Only owner can transfer mining mining_claims_hardware"); + + Self::update_owner(&to, mining_claims_hardware_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_claims_hardware_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(0)] + pub fn claim( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) { + let _sender = ensure_signed(origin)?; + + // TODO - implement similar to claims/token when it is working and uncomment the integration tests + return Err(DispatchError::Other("Not implemented")); + } + + /// Set mining_claims_hardware_claims_result + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_claims_hardware_claims_result( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_eligibility_hardware_id: T::MiningEligibilityHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + _hardware_claim_amount: Option, + // FIXME - the date should be generated without the extrinsic itself, not passed as an argument like this + _hardware_claim_block_redeemed: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_claims_hardware_id whose config we want to change actually exists + let is_mining_claims_hardware = Self::exists_mining_claims_hardware(mining_claims_hardware_id).is_ok(); + ensure!(is_mining_claims_hardware, "MiningClaimsHardware does not exist"); + + // Ensure that the caller is owner of the mining_claims_hardware_claims_result they are trying to change + ensure!(Self::mining_claims_hardware_owner(mining_claims_hardware_id) == Some(sender.clone()), "Only owner can set mining_claims_hardware_claims_result"); + + // TODO - adjust defaults + let hardware_claim_amount = match _hardware_claim_amount.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_claim_block_redeemed = match _hardware_claim_block_redeemed { + Some(value) => value, + None => 1u32.into() // Default + }; + + // Check if a mining_claims_hardware_claims_result already exists with the given mining_claims_hardware_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_claims_hardware_claims_result_index(mining_setting_hardware_id, mining_claims_hardware_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_hardware_id, mining_claims_hardware_id), |mining_claims_hardware_claims_result| { + if let Some(_mining_claims_hardware_claims_result) = mining_claims_hardware_claims_result { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_claims_hardware_claims_result.hardware_claim_amount = hardware_claim_amount.clone(); + _mining_claims_hardware_claims_result.hardware_claim_block_redeemed = hardware_claim_block_redeemed.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_claims_hardware_claims_result = >::get((mining_setting_hardware_id, mining_claims_hardware_id)); + if let Some(_mining_claims_hardware_claims_result) = fetched_mining_claims_hardware_claims_result { + info!("Latest field hardware_claim_amount {:#?}", _mining_claims_hardware_claims_result.hardware_claim_amount); + info!("Latest field hardware_claim_block_redeemed {:#?}", _mining_claims_hardware_claims_result.hardware_claim_block_redeemed); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_claims_hardware_claims_result instance with the input params + let mining_claims_hardware_claims_result_instance = MiningClaimsHardwareClaimResult { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hardware_claim_amount: hardware_claim_amount.clone(), + hardware_claim_block_redeemed: hardware_claim_block_redeemed.clone(), + }; + + >::insert( + (mining_setting_hardware_id, mining_claims_hardware_id), + &mining_claims_hardware_claims_result_instance + ); + + info!("Checking inserted values"); + let fetched_mining_claims_hardware_claims_result = >::get((mining_setting_hardware_id, mining_claims_hardware_id)); + if let Some(_mining_claims_hardware_claims_result) = fetched_mining_claims_hardware_claims_result { + info!("Inserted field hardware_claim_amount {:#?}", _mining_claims_hardware_claims_result.hardware_claim_amount); + info!("Inserted field hardware_claim_block_redeemed {:#?}", _mining_claims_hardware_claims_result.hardware_claim_block_redeemed); + } + } + + Self::deposit_event(RawEvent::MiningClaimsHardwareClaimResultSet( + sender, + mining_setting_hardware_id, + mining_claims_hardware_id, + hardware_claim_amount, + hardware_claim_block_redeemed, + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_claim_to_configuration( + origin, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_hardware = > + ::exists_mining_setting_hardware(mining_setting_hardware_id).is_ok(); + ensure!(is_configuration_hardware, "configuration_hardware does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the claim to + ensure!( + >::is_mining_setting_hardware_owner(mining_setting_hardware_id, sender.clone()).is_ok(), + "Only the configuration_hardware owner can assign itself a claim" + ); + + Self::associate_hardware_claim_with_configuration(mining_claims_hardware_id, mining_setting_hardware_id) + .expect("Unable to associate claim with configuration"); + + // Ensure that the given mining_claims_hardware_id already exists + let hardware_claim = Self::mining_claims_hardware(mining_claims_hardware_id); + ensure!(hardware_claim.is_some(), "Invalid mining_claims_hardware_id"); + + // // Ensure that the claim is not already owned by a different configuration + // // Unassign the claim from any existing configuration since it may only be owned by one configuration + // >::remove(mining_claims_hardware_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_claims_hardware_id, mining_setting_hardware_id); + + Self::deposit_event(RawEvent::AssignedHardwareClaimToConfiguration(sender, mining_claims_hardware_id, mining_setting_hardware_id)); + } + } +} + +impl Module { + pub fn is_mining_claims_hardware_owner( + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_claims_hardware_owner( + &mining_claims_hardware_id + ) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningClaimsHardware" + ); + Ok(()) + } + + pub fn exists_mining_claims_hardware( + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) -> Result { + match Self::mining_claims_hardware(mining_claims_hardware_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningClaimsHardware does not exist")), + } + } + + pub fn exists_mining_claims_hardware_claims_result( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) -> Result<(), DispatchError> { + match Self::mining_claims_hardware_claims_results(( + mining_setting_hardware_id, + mining_claims_hardware_id, + )) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningClaimsHardwareClaimResult does not exist")), + } + } + + pub fn has_value_for_mining_claims_hardware_claims_result_index( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) -> Result<(), DispatchError> { + info!( + "Checking if mining_claims_hardware_claims_result has a value that is defined" + ); + let fetched_mining_claims_hardware_claims_result = + >::get(( + mining_setting_hardware_id, + mining_claims_hardware_id, + )); + if let Some(_value) = fetched_mining_claims_hardware_claims_result { + info!("Found value for mining_claims_hardware_claims_result"); + return Ok(()); + } + warn!("No value for mining_claims_hardware_claims_result"); + Err(DispatchError::Other("No value for mining_claims_hardware_claims_result")) + } + + /// Only push the claim id onto the end of the vector if it does not already exist + pub fn associate_hardware_claim_with_configuration( + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given claim id + if let Some(configuration_claims) = + Self::hardware_config_claims(mining_setting_hardware_id) + { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_hardware_id, + configuration_claims + ); + let not_configuration_contains_claim = + !configuration_claims.contains(&mining_claims_hardware_id); + ensure!(not_configuration_contains_claim, "Configuration already contains the given claim id"); + info!("Configuration id key exists but its vector value does not contain the given claim id"); + >::mutate( + mining_setting_hardware_id, + |v| { + if let Some(value) = v { + value.push(mining_claims_hardware_id); + } + }, + ); + info!( + "Associated claim {:?} with configuration {:?}", + mining_claims_hardware_id, + mining_setting_hardware_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the claim \ + id {:?} to its vector value", + mining_setting_hardware_id, + mining_claims_hardware_id + ); + >::insert( + mining_setting_hardware_id, + &vec![mining_claims_hardware_id], + ); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_claims_hardware_id() + -> Result { + let mining_claims_hardware_id = + Self::mining_claims_hardware_count(); + if mining_claims_hardware_id == + ::max_value() + { + return Err(DispatchError::Other("MiningClaimsHardware count overflow")); + } + Ok(mining_claims_hardware_id) + } + + fn insert_mining_claims_hardware( + owner: &T::AccountId, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + mining_claims_hardware: MiningClaimsHardware, + ) { + // Create and store mining mining_claims_hardware + >::insert( + mining_claims_hardware_id, + mining_claims_hardware, + ); + >::put( + mining_claims_hardware_id + One::one(), + ); + >::insert( + mining_claims_hardware_id, + owner.clone(), + ); + } + + fn update_owner( + to: &T::AccountId, + mining_claims_hardware_id: T::MiningClaimsHardwareIndex, + ) { + >::insert( + mining_claims_hardware_id, + to, + ); + } +} diff --git a/pallets/mining/rates/hardware/Cargo.toml b/pallets/mining/rates/hardware/Cargo.toml new file mode 100644 index 00000000..08a3c070 --- /dev/null +++ b/pallets/mining/rates/hardware/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = 'mining-rates-hardware' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/rates/hardware/src/benchmarking.rs b/pallets/mining/rates/hardware/src/benchmarking.rs new file mode 100644 index 00000000..bdbde356 --- /dev/null +++ b/pallets/mining/rates/hardware/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningRatesHardware; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningRatesHardware, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/rates/hardware/src/lib.rs b/pallets/mining/rates/hardware/src/lib.rs new file mode 100644 index 00000000..8c440bda --- /dev/null +++ b/pallets/mining/rates/hardware/src/lib.rs @@ -0,0 +1,365 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config { + type Event: From> + Into<::Event>; + type MiningRatesHardwareIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesHardwareSecure: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesHardwareInsecure: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesHardwareMaxHardware: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesHardwareCategory1MaxTokenBonusPerGateway: Parameter + + Member + + AtLeast32Bit + + Bounded + + Default + + Copy; + type MiningRatesHardwareCategory2MaxTokenBonusPerGateway: Parameter + + Member + + AtLeast32Bit + + Bounded + + Default + + Copy; + type MiningRatesHardwareCategory3MaxTokenBonusPerGateway: Parameter + + Member + + AtLeast32Bit + + Bounded + + Default + + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningRatesHardware(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningRatesHardwareSetting { + pub hardware_hardware_secure: U, + pub hardware_hardware_insecure: V, + pub hardware_max_hardware: W, + pub hardware_category_1_max_token_bonus_per_gateway: X, + pub hardware_category_2_max_token_bonus_per_gateway: Y, + pub hardware_category_3_max_token_bonus_per_gateway: Z, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningRatesHardwareIndex, + ::MiningRatesHardwareSecure, + ::MiningRatesHardwareInsecure, + ::MiningRatesHardwareMaxHardware, + ::MiningRatesHardwareCategory1MaxTokenBonusPerGateway, + ::MiningRatesHardwareCategory2MaxTokenBonusPerGateway, + ::MiningRatesHardwareCategory3MaxTokenBonusPerGateway, + // Balance = BalanceOf, + { + /// A mining_rates_hardware is created. (owner, mining_rates_hardware_id) + Created(AccountId, MiningRatesHardwareIndex), + /// A mining_rates_hardware is transferred. (from, to, mining_rates_hardware_id) + Transferred(AccountId, AccountId, MiningRatesHardwareIndex), + MiningRatesHardwareSettingSet( + AccountId, MiningRatesHardwareIndex, MiningRatesHardwareSecure, + MiningRatesHardwareInsecure, MiningRatesHardwareMaxHardware, + MiningRatesHardwareCategory1MaxTokenBonusPerGateway, + MiningRatesHardwareCategory2MaxTokenBonusPerGateway, + MiningRatesHardwareCategory3MaxTokenBonusPerGateway + ), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningRatesHardware { + /// Stores all the mining_rates_hardwares, key is the mining_rates_hardware id / index + pub MiningRatesHardwares get(fn mining_rates_hardware): map hasher(opaque_blake2_256) T::MiningRatesHardwareIndex => Option; + + /// Stores the total number of mining_rates_hardwares. i.e. the next mining_rates_hardware index + pub MiningRatesHardwareCount get(fn mining_rates_hardware_count): T::MiningRatesHardwareIndex; + + /// Stores mining_rates_hardware owner + pub MiningRatesHardwareOwners get(fn mining_rates_hardware_owner): map hasher(opaque_blake2_256) T::MiningRatesHardwareIndex => Option; + + /// Stores mining_rates_hardware_rates_config + pub MiningRatesHardwareSettings get(fn mining_rates_hardware_rates_configs): map hasher(opaque_blake2_256) T::MiningRatesHardwareIndex => + Option>; + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_rates_hardware + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_rates_hardware_id = Self::next_mining_rates_hardware_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_rates_hardware + let mining_rates_hardware = MiningRatesHardware(unique_id); + Self::insert_mining_rates_hardware(&sender, mining_rates_hardware_id, mining_rates_hardware); + + Self::deposit_event(RawEvent::Created(sender, mining_rates_hardware_id)); + } + + /// Transfer a mining_rates_hardware to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_rates_hardware_id: T::MiningRatesHardwareIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_rates_hardware_owner(mining_rates_hardware_id) == Some(sender.clone()), "Only owner can transfer mining mining_rates_hardware"); + + Self::update_owner(&to, mining_rates_hardware_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_rates_hardware_id)); + } + + /// Set mining_rates_hardware_rates_config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_rates_hardware_rates_config( + origin, + mining_rates_hardware_id: T::MiningRatesHardwareIndex, + _hardware_hardware_secure: Option, + _hardware_hardware_insecure: Option, + _hardware_max_hardware: Option, + _hardware_category_1_max_token_bonus_per_gateway: Option, + _hardware_category_2_max_token_bonus_per_gateway: Option, + _hardware_category_3_max_token_bonus_per_gateway: Option + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_rates_hardware_id whose config we want to change actually exists + let is_mining_rates_hardware = Self::exists_mining_rates_hardware(mining_rates_hardware_id).is_ok(); + ensure!(is_mining_rates_hardware, "MiningRatesHardware does not exist"); + + // Ensure that the caller is owner of the mining_rates_hardware_rates_config they are trying to change + ensure!(Self::mining_rates_hardware_owner(mining_rates_hardware_id) == Some(sender.clone()), "Only owner can set mining_rates_hardware_rates_config"); + + // TODO - adjust default rates + let hardware_hardware_secure = match _hardware_hardware_secure.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_hardware_insecure = match _hardware_hardware_insecure { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_max_hardware = match _hardware_max_hardware { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_category_1_max_token_bonus_per_gateway = match _hardware_category_1_max_token_bonus_per_gateway.clone() { + Some(value) => value, + None => 1000000u32.into() // Default + }; + let hardware_category_2_max_token_bonus_per_gateway = match _hardware_category_2_max_token_bonus_per_gateway { + Some(value) => value, + None => 500000u32.into() // Default + }; + let hardware_category_3_max_token_bonus_per_gateway = match _hardware_category_3_max_token_bonus_per_gateway { + Some(value) => value, + None => 250000u32.into() // Default + }; + + // Check if a mining_rates_hardware_rates_config already exists with the given mining_rates_hardware_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_rates_hardware_rates_config_index(mining_rates_hardware_id).is_ok() { + info!("Mutating values"); + >::mutate(mining_rates_hardware_id, |mining_rates_hardware_rates_config| { + if let Some(_mining_rates_hardware_rates_config) = mining_rates_hardware_rates_config { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_rates_hardware_rates_config.hardware_hardware_secure = hardware_hardware_secure.clone(); + _mining_rates_hardware_rates_config.hardware_hardware_insecure = hardware_hardware_insecure.clone(); + _mining_rates_hardware_rates_config.hardware_max_hardware = hardware_max_hardware.clone(); + _mining_rates_hardware_rates_config.hardware_category_1_max_token_bonus_per_gateway = hardware_category_1_max_token_bonus_per_gateway.clone(); + _mining_rates_hardware_rates_config.hardware_category_2_max_token_bonus_per_gateway = hardware_category_2_max_token_bonus_per_gateway.clone(); + _mining_rates_hardware_rates_config.hardware_category_3_max_token_bonus_per_gateway = hardware_category_3_max_token_bonus_per_gateway.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_rates_hardware_rates_config = >::get(mining_rates_hardware_id); + if let Some(_mining_rates_hardware_rates_config) = fetched_mining_rates_hardware_rates_config { + info!("Latest field hardware_hardware_secure {:#?}", _mining_rates_hardware_rates_config.hardware_hardware_secure); + info!("Latest field hardware_hardware_insecure {:#?}", _mining_rates_hardware_rates_config.hardware_hardware_insecure); + info!("Latest field hardware_max_hardware {:#?}", _mining_rates_hardware_rates_config.hardware_max_hardware); + info!("Latest field hardware_category_1_max_token_bonus_per_gateway {:#?}", _mining_rates_hardware_rates_config.hardware_category_1_max_token_bonus_per_gateway); + info!("Latest field hardware_category_2_max_token_bonus_per_gateway {:#?}", _mining_rates_hardware_rates_config.hardware_category_2_max_token_bonus_per_gateway); + info!("Latest field hardware_category_3_max_token_bonus_per_gateway {:#?}", _mining_rates_hardware_rates_config.hardware_category_3_max_token_bonus_per_gateway); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_rates_hardware_rates_config instance with the input params + let mining_rates_hardware_rates_config_instance = MiningRatesHardwareSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hardware_hardware_secure: hardware_hardware_secure.clone(), + hardware_hardware_insecure: hardware_hardware_insecure.clone(), + hardware_max_hardware: hardware_max_hardware.clone(), + hardware_category_1_max_token_bonus_per_gateway: hardware_category_1_max_token_bonus_per_gateway.clone(), + hardware_category_2_max_token_bonus_per_gateway: hardware_category_2_max_token_bonus_per_gateway.clone(), + hardware_category_3_max_token_bonus_per_gateway: hardware_category_3_max_token_bonus_per_gateway.clone(), + }; + + >::insert( + mining_rates_hardware_id, + &mining_rates_hardware_rates_config_instance + ); + + info!("Checking inserted values"); + let fetched_mining_rates_hardware_rates_config = >::get(mining_rates_hardware_id); + if let Some(_mining_rates_hardware_rates_config) = fetched_mining_rates_hardware_rates_config { + info!("Inserted field hardware_hardware_secure {:#?}", _mining_rates_hardware_rates_config.hardware_hardware_secure); + info!("Inserted field hardware_hardware_insecure {:#?}", _mining_rates_hardware_rates_config.hardware_hardware_insecure); + info!("Inserted field hardware_max_hardware {:#?}", _mining_rates_hardware_rates_config.hardware_max_hardware); + info!("Inserted field hardware_category_1_max_token_bonus_per_gateway {:#?}", _mining_rates_hardware_rates_config.hardware_category_1_max_token_bonus_per_gateway); + info!("Inserted field hardware_category_2_max_token_bonus_per_gateway {:#?}", _mining_rates_hardware_rates_config.hardware_category_2_max_token_bonus_per_gateway); + info!("Inserted field hardware_category_3_max_token_bonus_per_gateway {:#?}", _mining_rates_hardware_rates_config.hardware_category_3_max_token_bonus_per_gateway); + } + } + + Self::deposit_event(RawEvent::MiningRatesHardwareSettingSet( + sender, + mining_rates_hardware_id, + hardware_hardware_secure, + hardware_hardware_insecure, + hardware_max_hardware, + hardware_category_1_max_token_bonus_per_gateway, + hardware_category_2_max_token_bonus_per_gateway, + hardware_category_3_max_token_bonus_per_gateway, + )); + } + } +} + +impl Module { + pub fn is_mining_rates_hardware_owner( + mining_rates_hardware_id: T::MiningRatesHardwareIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_rates_hardware_owner(&mining_rates_hardware_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of MiningRatesHardware" + ); + Ok(()) + } + + pub fn exists_mining_rates_hardware( + mining_rates_hardware_id: T::MiningRatesHardwareIndex, + ) -> Result { + match Self::mining_rates_hardware(mining_rates_hardware_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningRatesHardware does not exist")), + } + } + + pub fn exists_mining_rates_hardware_rates_config( + mining_rates_hardware_id: T::MiningRatesHardwareIndex, + ) -> Result<(), DispatchError> { + match Self::mining_rates_hardware_rates_configs(mining_rates_hardware_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningRatesHardwareSetting does not exist")), + } + } + + pub fn has_value_for_mining_rates_hardware_rates_config_index( + mining_rates_hardware_id: T::MiningRatesHardwareIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_rates_hardware_rates_config has a value that is defined"); + let fetched_mining_rates_hardware_rates_config = >::get(mining_rates_hardware_id); + if let Some(_value) = fetched_mining_rates_hardware_rates_config { + info!("Found value for mining_rates_hardware_rates_config"); + return Ok(()); + } + warn!("No value for mining_rates_hardware_rates_config"); + Err(DispatchError::Other("No value for mining_rates_hardware_rates_config")) + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_rates_hardware_id() -> Result { + let mining_rates_hardware_id = Self::mining_rates_hardware_count(); + if mining_rates_hardware_id == ::max_value() { + return Err(DispatchError::Other("MiningRatesHardware count overflow")); + } + Ok(mining_rates_hardware_id) + } + + fn insert_mining_rates_hardware( + owner: &T::AccountId, + mining_rates_hardware_id: T::MiningRatesHardwareIndex, + mining_rates_hardware: MiningRatesHardware, + ) { + // Create and store mining mining_rates_hardware + >::insert(mining_rates_hardware_id, mining_rates_hardware); + >::put(mining_rates_hardware_id + One::one()); + >::insert(mining_rates_hardware_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_rates_hardware_id: T::MiningRatesHardwareIndex) { + >::insert(mining_rates_hardware_id, to); + } +} diff --git a/pallets/mining/rates/hardware/src/mock.rs b/pallets/mining/rates/hardware/src/mock.rs new file mode 100644 index 00000000..b5ccb119 --- /dev/null +++ b/pallets/mining/rates/hardware/src/mock.rs @@ -0,0 +1,129 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl Config for Test { + type Event = (); + type MiningRatesHardwareCategory1MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory2MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory3MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareIndex = u64; + type MiningRatesHardwareInsecure = u32; + type MiningRatesHardwareMaxHardware = u32; + type MiningRatesHardwareSecure = u32; +} + +pub type MiningRatesHardwareTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/rates/hardware/src/tests.rs b/pallets/mining/rates/hardware/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/rates/hardware/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/rates/token/Cargo.toml b/pallets/mining/rates/token/Cargo.toml new file mode 100644 index 00000000..7df761c0 --- /dev/null +++ b/pallets/mining/rates/token/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = 'mining-rates-token' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/rates/token/src/benchmarking.rs b/pallets/mining/rates/token/src/benchmarking.rs new file mode 100644 index 00000000..60fabf74 --- /dev/null +++ b/pallets/mining/rates/token/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningRatesToken; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningRatesToken, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/rates/token/src/lib.rs b/pallets/mining/rates/token/src/lib.rs new file mode 100644 index 00000000..e943e64b --- /dev/null +++ b/pallets/mining/rates/token/src/lib.rs @@ -0,0 +1,340 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config { + type Event: From> + Into<::Event>; + type MiningRatesTokenIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesTokenTokenMXC: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesTokenTokenIOTA: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesTokenTokenDOT: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesTokenMaxToken: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningRatesTokenMaxLoyalty: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningRatesToken(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningRatesTokenSetting { + pub token_token_mxc: U, + pub token_token_iota: V, + pub token_token_dot: W, + pub token_max_token: X, + pub token_max_loyalty: Y, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningRatesTokenIndex, + ::MiningRatesTokenTokenMXC, + ::MiningRatesTokenTokenIOTA, + ::MiningRatesTokenTokenDOT, + ::MiningRatesTokenMaxToken, + ::MiningRatesTokenMaxLoyalty, + // Balance = BalanceOf, + { + /// A mining_rates_token is created. (owner, mining_rates_token_id) + Created(AccountId, MiningRatesTokenIndex), + /// A mining_rates_token is transferred. (from, to, mining_rates_token_id) + Transferred(AccountId, AccountId, MiningRatesTokenIndex), + MiningRatesTokenSettingSet( + AccountId, MiningRatesTokenIndex, MiningRatesTokenTokenMXC, + MiningRatesTokenTokenIOTA, MiningRatesTokenTokenDOT, + MiningRatesTokenMaxToken, MiningRatesTokenMaxLoyalty + ), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningRatesToken { + /// Stores all the mining_rates_tokens, key is the mining_rates_token id / index + pub MiningRatesTokens get(fn mining_rates_token): map hasher(opaque_blake2_256) T::MiningRatesTokenIndex => Option; + + /// Stores the total number of mining_rates_tokens. i.e. the next mining_rates_token index + pub MiningRatesTokenCount get(fn mining_rates_token_count): T::MiningRatesTokenIndex; + + /// Stores mining_rates_token owner + pub MiningRatesTokenOwners get(fn mining_rates_token_owner): map hasher(opaque_blake2_256) T::MiningRatesTokenIndex => Option; + + /// Stores mining_rates_token_rates_config + pub MiningRatesTokenSettings get(fn mining_rates_token_rates_configs): map hasher(opaque_blake2_256) T::MiningRatesTokenIndex => + Option>; + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_rates_token + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_rates_token_id = Self::next_mining_rates_token_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_rates_token + let mining_rates_token = MiningRatesToken(unique_id); + Self::insert_mining_rates_token(&sender, mining_rates_token_id, mining_rates_token); + + Self::deposit_event(RawEvent::Created(sender, mining_rates_token_id)); + } + + /// Transfer a mining_rates_token to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_rates_token_id: T::MiningRatesTokenIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_rates_token_owner(mining_rates_token_id) == Some(sender.clone()), "Only owner can transfer mining mining_rates_token"); + + Self::update_owner(&to, mining_rates_token_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_rates_token_id)); + } + + /// Set mining_rates_token_rates_config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_rates_token_rates_config( + origin, + mining_rates_token_id: T::MiningRatesTokenIndex, + _token_token_mxc: Option, + _token_token_iota: Option, + _token_token_dot: Option, + _token_max_token: Option, + _token_max_loyalty: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_rates_token_id whose config we want to change actually exists + let is_mining_rates_token = Self::exists_mining_rates_token(mining_rates_token_id).is_ok(); + ensure!(is_mining_rates_token, "MiningRatesToken does not exist"); + + // Ensure that the caller is owner of the mining_rates_token_rates_config they are trying to change + ensure!(Self::mining_rates_token_owner(mining_rates_token_id) == Some(sender.clone()), "Only owner can set mining_rates_token_rates_config"); + + // TODO - adjust default rates + let token_token_mxc = match _token_token_mxc.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_token_iota = match _token_token_iota { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_token_dot = match _token_token_dot { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_max_token = match _token_max_token { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_max_loyalty = match _token_max_loyalty { + Some(value) => value, + None => 1u32.into() // Default + }; + + // FIXME - how to use float and overcome error: + // the trait `std::str::FromStr` is not implemented for `::MiningRatesTokenMaxToken + // if token_token_mxc > "1.2".parse().unwrap() || token_token_iota > "1.2".parse().unwrap() || token_token_dot > "1.2".parse().unwrap() || token_max_token > "1.6".parse().unwrap() || token_max_loyalty > "1.2".parse().unwrap() { + // warn!("Token rate cannot be this large"); + + // return Ok(()); + // } + + // Check if a mining_rates_token_rates_config already exists with the given mining_rates_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_rates_token_rates_config_index(mining_rates_token_id).is_ok() { + info!("Mutating values"); + >::mutate(mining_rates_token_id, |mining_rates_token_rates_config| { + if let Some(_mining_rates_token_rates_config) = mining_rates_token_rates_config { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_rates_token_rates_config.token_token_mxc = token_token_mxc.clone(); + _mining_rates_token_rates_config.token_token_iota = token_token_iota.clone(); + _mining_rates_token_rates_config.token_token_dot = token_token_dot.clone(); + _mining_rates_token_rates_config.token_max_token = token_max_token.clone(); + _mining_rates_token_rates_config.token_max_loyalty = token_max_loyalty.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_rates_token_rates_config = >::get(mining_rates_token_id); + if let Some(_mining_rates_token_rates_config) = fetched_mining_rates_token_rates_config { + info!("Latest field token_token_mxc {:#?}", _mining_rates_token_rates_config.token_token_mxc); + info!("Latest field token_token_iota {:#?}", _mining_rates_token_rates_config.token_token_iota); + info!("Latest field token_token_dot {:#?}", _mining_rates_token_rates_config.token_token_dot); + info!("Latest field token_max_token {:#?}", _mining_rates_token_rates_config.token_max_token); + info!("Latest field token_max_loyalty {:#?}", _mining_rates_token_rates_config.token_max_loyalty); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_rates_token_rates_config instance with the input params + let mining_rates_token_rates_config_instance = MiningRatesTokenSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_token_mxc: token_token_mxc.clone(), + token_token_iota: token_token_iota.clone(), + token_token_dot: token_token_dot.clone(), + token_max_token: token_max_token.clone(), + token_max_loyalty: token_max_loyalty.clone(), + }; + + >::insert( + mining_rates_token_id, + &mining_rates_token_rates_config_instance + ); + + info!("Checking inserted values"); + let fetched_mining_rates_token_rates_config = >::get(mining_rates_token_id); + if let Some(_mining_rates_token_rates_config) = fetched_mining_rates_token_rates_config { + info!("Inserted field token_token_mxc {:#?}", _mining_rates_token_rates_config.token_token_mxc); + info!("Inserted field token_token_iota {:#?}", _mining_rates_token_rates_config.token_token_iota); + info!("Inserted field token_token_dot {:#?}", _mining_rates_token_rates_config.token_token_dot); + info!("Inserted field token_max_token {:#?}", _mining_rates_token_rates_config.token_max_token); + info!("Inserted field token_max_loyalty {:#?}", _mining_rates_token_rates_config.token_max_loyalty); + } + } + + Self::deposit_event(RawEvent::MiningRatesTokenSettingSet( + sender, + mining_rates_token_id, + token_token_mxc, + token_token_iota, + token_token_dot, + token_max_token, + token_max_loyalty, + )); + } + } +} + +impl Module { + pub fn is_mining_rates_token_owner( + mining_rates_token_id: T::MiningRatesTokenIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_rates_token_owner(&mining_rates_token_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of MiningRatesToken" + ); + Ok(()) + } + + pub fn exists_mining_rates_token( + mining_rates_token_id: T::MiningRatesTokenIndex, + ) -> Result { + match Self::mining_rates_token(mining_rates_token_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningRatesToken does not exist")), + } + } + + pub fn exists_mining_rates_token_rates_config( + mining_rates_token_id: T::MiningRatesTokenIndex, + ) -> Result<(), DispatchError> { + match Self::mining_rates_token_rates_configs(mining_rates_token_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningRatesTokenSetting does not exist")), + } + } + + pub fn has_value_for_mining_rates_token_rates_config_index( + mining_rates_token_id: T::MiningRatesTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_rates_token_rates_config has a value that is defined"); + let fetched_mining_rates_token_rates_config = >::get(mining_rates_token_id); + if let Some(_value) = fetched_mining_rates_token_rates_config { + info!("Found value for mining_rates_token_rates_config"); + return Ok(()); + } + warn!("No value for mining_rates_token_rates_config"); + Err(DispatchError::Other("No value for mining_rates_token_rates_config")) + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_rates_token_id() -> Result { + let mining_rates_token_id = Self::mining_rates_token_count(); + if mining_rates_token_id == ::max_value() { + return Err(DispatchError::Other("MiningRatesToken count overflow")); + } + Ok(mining_rates_token_id) + } + + fn insert_mining_rates_token( + owner: &T::AccountId, + mining_rates_token_id: T::MiningRatesTokenIndex, + mining_rates_token: MiningRatesToken, + ) { + // Create and store mining mining_rates_token + >::insert(mining_rates_token_id, mining_rates_token); + >::put(mining_rates_token_id + One::one()); + >::insert(mining_rates_token_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_rates_token_id: T::MiningRatesTokenIndex) { + >::insert(mining_rates_token_id, to); + } +} diff --git a/pallets/mining/rates/token/src/mock.rs b/pallets/mining/rates/token/src/mock.rs new file mode 100644 index 00000000..ffd868dd --- /dev/null +++ b/pallets/mining/rates/token/src/mock.rs @@ -0,0 +1,128 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl Config for Test { + type Event = (); + type MiningRatesTokenIndex = u64; + type MiningRatesTokenMaxLoyalty = u32; + type MiningRatesTokenMaxToken = u32; + type MiningRatesTokenTokenDOT = u32; + type MiningRatesTokenTokenIOTA = u32; + type MiningRatesTokenTokenMXC = u32; +} + +pub type MiningRatesTokenTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/rates/token/src/tests.rs b/pallets/mining/rates/token/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/rates/token/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/sampling/hardware/Cargo.toml b/pallets/mining/sampling/hardware/Cargo.toml new file mode 100644 index 00000000..c10e1127 --- /dev/null +++ b/pallets/mining/sampling/hardware/Cargo.toml @@ -0,0 +1,53 @@ +[package] +name = 'mining-sampling-hardware' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-setting-hardware/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-hardware = { default-features = false, package = 'mining-setting-hardware', path = '../../../mining/setting/hardware' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/sampling/hardware/src/benchmarking.rs b/pallets/mining/sampling/hardware/src/benchmarking.rs new file mode 100644 index 00000000..a60398a8 --- /dev/null +++ b/pallets/mining/sampling/hardware/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningSamplingHardware; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningSamplingHardware, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/sampling/hardware/src/lib.rs b/pallets/mining/sampling/hardware/src/lib.rs new file mode 100644 index 00000000..1af5c0b0 --- /dev/null +++ b/pallets/mining/sampling/hardware/src/lib.rs @@ -0,0 +1,389 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_hardware; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + mining_setting_hardware::Config { + type Event: From> + Into<::Event>; + type MiningSamplingHardwareIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningSamplingHardwareSampleHardwareOnline: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningSamplingHardware(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningSamplingHardwareSetting { + pub hardware_sample_block: U, + pub hardware_sample_hardware_online: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningSamplingHardwareIndex, + ::MiningSamplingHardwareSampleHardwareOnline, + ::MiningSettingHardwareIndex, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_sampling_hardware is created. (owner, mining_sampling_hardware_id) + Created(AccountId, MiningSamplingHardwareIndex), + /// A mining_samplings_hardware is transferred. (from, to, mining_samplings_hardware_id) + Transferred(AccountId, AccountId, MiningSamplingHardwareIndex), + MiningSamplingHardwareSettingSet( + AccountId, MiningSettingHardwareIndex, MiningSamplingHardwareIndex, + BlockNumber, MiningSamplingHardwareSampleHardwareOnline + ), + /// A mining_sampling_hardware is assigned to an mining_hardware. + /// (owner of mining_hardware, mining_samplings_hardware_id, mining_setting_hardware_id) + AssignedHardwareSamplingToConfiguration(AccountId, MiningSamplingHardwareIndex, MiningSettingHardwareIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningSamplingHardware { + /// Stores all the mining_samplings_hardwares, key is the mining_samplings_hardware id / index + pub MiningSamplingHardwares get(fn mining_samplings_hardware): map hasher(opaque_blake2_256) T::MiningSamplingHardwareIndex => Option; + + /// Stores the total number of mining_samplings_hardwares. i.e. the next mining_samplings_hardware index + pub MiningSamplingHardwareCount get(fn mining_samplings_hardware_count): T::MiningSamplingHardwareIndex; + + /// Stores mining_samplings_hardware owner + pub MiningSamplingHardwareOwners get(fn mining_samplings_hardware_owner): map hasher(opaque_blake2_256) T::MiningSamplingHardwareIndex => Option; + + /// Stores mining_samplings_hardware_samplings_config + pub MiningSamplingHardwareSettings get(fn mining_samplings_hardware_samplings_configs): map hasher(opaque_blake2_256) (T::MiningSettingHardwareIndex, T::MiningSamplingHardwareIndex) => + Option>; + + /// Get mining_setting_hardware_id belonging to a mining_samplings_hardware_id + pub HardwareSamplingConfiguration get(fn hardware_sampling_configuration): map hasher(opaque_blake2_256) T::MiningSamplingHardwareIndex => Option; + + /// Get mining_samplings_hardware_id's belonging to a mining_setting_hardware_id + pub HardwareSettingSamplings get(fn hardware_config_samplings): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_samplings_hardware + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_samplings_hardware_id = Self::next_mining_samplings_hardware_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_samplings_hardware + let mining_samplings_hardware = MiningSamplingHardware(unique_id); + Self::insert_mining_samplings_hardware(&sender, mining_samplings_hardware_id, mining_samplings_hardware); + + Self::deposit_event(RawEvent::Created(sender, mining_samplings_hardware_id)); + } + + /// Transfer a mining_samplings_hardware to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_samplings_hardware_id: T::MiningSamplingHardwareIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_samplings_hardware_owner(mining_samplings_hardware_id) == Some(sender.clone()), "Only owner can transfer mining mining_samplings_hardware"); + + Self::update_owner(&to, mining_samplings_hardware_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_samplings_hardware_id)); + } + + /// Set mining_samplings_hardware_samplings_config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_samplings_hardware_samplings_config( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + _hardware_sample_block: Option, + _hardware_sample_hardware_online: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_samplings_hardware_id whose config we want to change actually exists + let is_mining_samplings_hardware = Self::exists_mining_samplings_hardware(mining_samplings_hardware_id).is_ok(); + ensure!(is_mining_samplings_hardware, "MiningSamplingHardware does not exist"); + + // Ensure that the caller is owner of the mining_samplings_hardware_samplings_config they are trying to change + ensure!(Self::mining_samplings_hardware_owner(mining_samplings_hardware_id) == Some(sender.clone()), "Only owner can set mining_samplings_hardware_samplings_config"); + + // TODO - adjust default samplings + let hardware_sample_block = match _hardware_sample_block.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let hardware_sample_hardware_online = match _hardware_sample_hardware_online { + Some(value) => value, + None => 1u32.into() // Default + }; + + // Check if a mining_samplings_hardware_samplings_config already exists with the given mining_samplings_hardware_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_samplings_hardware_samplings_config_index(mining_setting_hardware_id, mining_samplings_hardware_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_hardware_id, mining_samplings_hardware_id), |mining_samplings_hardware_samplings_config| { + if let Some(_mining_samplings_hardware_samplings_config) = mining_samplings_hardware_samplings_config { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_samplings_hardware_samplings_config.hardware_sample_block = hardware_sample_block.clone(); + _mining_samplings_hardware_samplings_config.hardware_sample_hardware_online = hardware_sample_hardware_online.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_samplings_hardware_samplings_config = >::get((mining_setting_hardware_id, mining_samplings_hardware_id)); + if let Some(_mining_samplings_hardware_samplings_config) = fetched_mining_samplings_hardware_samplings_config { + info!("Latest field hardware_sample_block {:#?}", _mining_samplings_hardware_samplings_config.hardware_sample_block); + info!("Latest field hardware_sample_hardware_online {:#?}", _mining_samplings_hardware_samplings_config.hardware_sample_hardware_online); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_samplings_hardware_samplings_config instance with the input params + let mining_samplings_hardware_samplings_config_instance = MiningSamplingHardwareSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hardware_sample_block: hardware_sample_block.clone(), + hardware_sample_hardware_online: hardware_sample_hardware_online.clone(), + }; + + >::insert( + (mining_setting_hardware_id, mining_samplings_hardware_id), + &mining_samplings_hardware_samplings_config_instance + ); + + info!("Checking inserted values"); + let fetched_mining_samplings_hardware_samplings_config = >::get((mining_setting_hardware_id, mining_samplings_hardware_id)); + if let Some(_mining_samplings_hardware_samplings_config) = fetched_mining_samplings_hardware_samplings_config { + info!("Inserted field hardware_sample_block {:#?}", _mining_samplings_hardware_samplings_config.hardware_sample_block); + info!("Inserted field hardware_sample_hardware_online {:#?}", _mining_samplings_hardware_samplings_config.hardware_sample_hardware_online); + } + } + + Self::deposit_event(RawEvent::MiningSamplingHardwareSettingSet( + sender, + mining_setting_hardware_id, + mining_samplings_hardware_id, + hardware_sample_block, + hardware_sample_hardware_online, + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_sampling_to_configuration( + origin, + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_hardware = > + ::exists_mining_setting_hardware(mining_setting_hardware_id).is_ok(); + ensure!(is_configuration_hardware, "configuration_hardware does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the sampling to + ensure!( + >::is_mining_setting_hardware_owner(mining_setting_hardware_id, sender.clone()).is_ok(), + "Only the configuration_hardware owner can assign itself a sampling" + ); + + Self::associate_hardware_sampling_with_configuration(mining_samplings_hardware_id, mining_setting_hardware_id) + .expect("Unable to associate sampling with configuration"); + + // Ensure that the given mining_samplings_hardware_id already exists + let hardware_sampling = Self::mining_samplings_hardware(mining_samplings_hardware_id); + ensure!(hardware_sampling.is_some(), "Invalid mining_samplings_hardware_id"); + + // // Ensure that the sampling is not already owned by a different configuration + // // Unassign the sampling from any existing configuration since it may only be owned by one configuration + // >::remove(mining_samplings_hardware_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_samplings_hardware_id, mining_setting_hardware_id); + + Self::deposit_event(RawEvent::AssignedHardwareSamplingToConfiguration(sender, mining_samplings_hardware_id, mining_setting_hardware_id)); + } + } +} + +impl Module { + pub fn is_mining_samplings_hardware_owner( + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_samplings_hardware_owner(&mining_samplings_hardware_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningSamplingHardware" + ); + Ok(()) + } + + pub fn exists_mining_samplings_hardware( + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + ) -> Result { + match Self::mining_samplings_hardware(mining_samplings_hardware_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningSamplingHardware does not exist")), + } + } + + pub fn exists_mining_samplings_hardware_samplings_config( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + ) -> Result<(), DispatchError> { + match Self::mining_samplings_hardware_samplings_configs(( + mining_setting_hardware_id, + mining_samplings_hardware_id, + )) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningSamplingHardwareSetting does not exist")), + } + } + + pub fn has_value_for_mining_samplings_hardware_samplings_config_index( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_samplings_hardware_samplings_config has a value that is defined"); + let fetched_mining_samplings_hardware_samplings_config = + >::get((mining_setting_hardware_id, mining_samplings_hardware_id)); + if let Some(_value) = fetched_mining_samplings_hardware_samplings_config { + info!("Found value for mining_samplings_hardware_samplings_config"); + return Ok(()); + } + warn!("No value for mining_samplings_hardware_samplings_config"); + Err(DispatchError::Other("No value for mining_samplings_hardware_samplings_config")) + } + + /// Only push the sampling id onto the end of the vector if it does not already exist + pub fn associate_hardware_sampling_with_configuration( + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given sampling id + if let Some(configuration_samplings) = Self::hardware_config_samplings(mining_setting_hardware_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_hardware_id, + configuration_samplings + ); + let not_configuration_contains_sampling = !configuration_samplings.contains(&mining_samplings_hardware_id); + ensure!(not_configuration_contains_sampling, "Configuration already contains the given sampling id"); + info!("Configuration id key exists but its vector value does not contain the given sampling id"); + >::mutate(mining_setting_hardware_id, |v| { + if let Some(value) = v { + value.push(mining_samplings_hardware_id); + } + }); + info!( + "Associated sampling {:?} with configuration {:?}", + mining_samplings_hardware_id, + mining_setting_hardware_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the \ + sampling id {:?} to its vector value", + mining_setting_hardware_id, + mining_samplings_hardware_id + ); + >::insert(mining_setting_hardware_id, &vec![mining_samplings_hardware_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_samplings_hardware_id() -> Result { + let mining_samplings_hardware_id = Self::mining_samplings_hardware_count(); + if mining_samplings_hardware_id == ::max_value() { + return Err(DispatchError::Other("MiningSamplingHardware count overflow")); + } + Ok(mining_samplings_hardware_id) + } + + fn insert_mining_samplings_hardware( + owner: &T::AccountId, + mining_samplings_hardware_id: T::MiningSamplingHardwareIndex, + mining_samplings_hardware: MiningSamplingHardware, + ) { + // Create and store mining mining_samplings_hardware + >::insert(mining_samplings_hardware_id, mining_samplings_hardware); + >::put(mining_samplings_hardware_id + One::one()); + >::insert(mining_samplings_hardware_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_samplings_hardware_id: T::MiningSamplingHardwareIndex) { + >::insert(mining_samplings_hardware_id, to); + } +} diff --git a/pallets/mining/sampling/hardware/src/mock.rs b/pallets/mining/sampling/hardware/src/mock.rs new file mode 100644 index 00000000..0c0c2e7e --- /dev/null +++ b/pallets/mining/sampling/hardware/src/mock.rs @@ -0,0 +1,139 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl mining_setting_hardware::Config for Test { + type Event = (); + type MiningSettingHardwareDevEUI = u64; + // type MiningSettingHardwareType = + // MiningSettingHardwareTypes; + type MiningSettingHardwareID = u64; + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingHardwareIndex = u64; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure = bool; + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingHardwareType = Vec; +} +impl Config for Test { + type Event = (); + type MiningSamplingHardwareIndex = u64; + type MiningSamplingHardwareSampleHardwareOnline = u64; +} + +pub type MiningSamplingHardwareTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/sampling/hardware/src/tests.rs b/pallets/mining/sampling/hardware/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/sampling/hardware/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/sampling/token/Cargo.toml b/pallets/mining/sampling/token/Cargo.toml new file mode 100644 index 00000000..c5e5a129 --- /dev/null +++ b/pallets/mining/sampling/token/Cargo.toml @@ -0,0 +1,53 @@ +[package] +name = 'mining-sampling-token' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'mining-setting-token/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } +mining-setting-token = { default-features = false, package = 'mining-setting-token', path = '../../../mining/setting/token' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/sampling/token/src/benchmarking.rs b/pallets/mining/sampling/token/src/benchmarking.rs new file mode 100644 index 00000000..31dd4ca7 --- /dev/null +++ b/pallets/mining/sampling/token/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningSamplingToken; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningSamplingToken, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/sampling/token/src/lib.rs b/pallets/mining/sampling/token/src/lib.rs new file mode 100644 index 00000000..bcb2b261 --- /dev/null +++ b/pallets/mining/sampling/token/src/lib.rs @@ -0,0 +1,386 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module +use mining_setting_token; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + mining_setting_token::Config { + type Event: From> + Into<::Event>; + type MiningSamplingTokenIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningSamplingTokenSampleLockedAmount: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningSamplingToken(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningSamplingTokenSetting { + pub token_sample_block: U, + pub token_sample_locked_amount: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningSamplingTokenIndex, + ::MiningSamplingTokenSampleLockedAmount, + ::MiningSettingTokenIndex, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_sampling_token is created. (owner, mining_sampling_token_id) + Created(AccountId, MiningSamplingTokenIndex), + /// A mining_samplings_token is transferred. (from, to, mining_samplings_token_id) + Transferred(AccountId, AccountId, MiningSamplingTokenIndex), + MiningSamplingTokenSettingSet( + AccountId, MiningSettingTokenIndex, MiningSamplingTokenIndex, + BlockNumber, MiningSamplingTokenSampleLockedAmount + ), + /// A mining_sampling_token is assigned to an mining_token. + /// (owner of mining_token, mining_samplings_token_id, mining_setting_token_id) + AssignedTokenSamplingToConfiguration(AccountId, MiningSamplingTokenIndex, MiningSettingTokenIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningSamplingToken { + /// Stores all the mining_samplings_tokens, key is the mining_samplings_token id / index + pub MiningSamplingTokens get(fn mining_samplings_token): map hasher(opaque_blake2_256) T::MiningSamplingTokenIndex => Option; + + /// Stores the total number of mining_samplings_tokens. i.e. the next mining_samplings_token index + pub MiningSamplingTokenCount get(fn mining_samplings_token_count): T::MiningSamplingTokenIndex; + + /// Stores mining_samplings_token owner + pub MiningSamplingTokenOwners get(fn mining_samplings_token_owner): map hasher(opaque_blake2_256) T::MiningSamplingTokenIndex => Option; + + /// Stores mining_samplings_token_samplings_config + pub MiningSamplingTokenSettings get(fn mining_samplings_token_samplings_configs): map hasher(opaque_blake2_256) (T::MiningSettingTokenIndex, T::MiningSamplingTokenIndex) => + Option>; + + /// Get mining_setting_token_id belonging to a mining_samplings_token_id + pub TokenSamplingConfiguration get(fn token_sampling_configuration): map hasher(opaque_blake2_256) T::MiningSamplingTokenIndex => Option; + + /// Get mining_samplings_token_id's belonging to a mining_setting_token_id + pub TokenSettingSamplings get(fn token_setting_samplings): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_samplings_token + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_samplings_token_id = Self::next_mining_samplings_token_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_samplings_token + let mining_samplings_token = MiningSamplingToken(unique_id); + Self::insert_mining_samplings_token(&sender, mining_samplings_token_id, mining_samplings_token); + + Self::deposit_event(RawEvent::Created(sender, mining_samplings_token_id)); + } + + /// Transfer a mining_samplings_token to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_samplings_token_id: T::MiningSamplingTokenIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_samplings_token_owner(mining_samplings_token_id) == Some(sender.clone()), "Only owner can transfer mining mining_samplings_token"); + + Self::update_owner(&to, mining_samplings_token_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_samplings_token_id)); + } + + /// Set mining_samplings_token_samplings_config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_samplings_token_samplings_config( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_samplings_token_id: T::MiningSamplingTokenIndex, + _token_sample_block: Option, + _token_sample_locked_amount: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_samplings_token_id whose config we want to change actually exists + let is_mining_samplings_token = Self::exists_mining_samplings_token(mining_samplings_token_id).is_ok(); + ensure!(is_mining_samplings_token, "MiningSamplingToken does not exist"); + + // Ensure that the caller is owner of the mining_samplings_token_samplings_config they are trying to change + ensure!(Self::mining_samplings_token_owner(mining_samplings_token_id) == Some(sender.clone()), "Only owner can set mining_samplings_token_samplings_config"); + + // TODO - adjust default samplings + let token_sample_block = match _token_sample_block.clone() { + Some(value) => value, + None => 1u32.into() // Default + }; + let token_sample_locked_amount = match _token_sample_locked_amount { + Some(value) => value, + None => 1u32.into() // Default + }; + + // Check if a mining_samplings_token_samplings_config already exists with the given mining_samplings_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_samplings_token_samplings_config_index(mining_setting_token_id, mining_samplings_token_id).is_ok() { + info!("Mutating values"); + >::mutate((mining_setting_token_id, mining_samplings_token_id), |mining_samplings_token_samplings_config| { + if let Some(_mining_samplings_token_samplings_config) = mining_samplings_token_samplings_config { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_samplings_token_samplings_config.token_sample_block = token_sample_block.clone(); + _mining_samplings_token_samplings_config.token_sample_locked_amount = token_sample_locked_amount.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_samplings_token_samplings_config = >::get((mining_setting_token_id, mining_samplings_token_id)); + if let Some(_mining_samplings_token_samplings_config) = fetched_mining_samplings_token_samplings_config { + info!("Latest field token_sample_block {:#?}", _mining_samplings_token_samplings_config.token_sample_block); + info!("Latest field token_sample_locked_amount {:#?}", _mining_samplings_token_samplings_config.token_sample_locked_amount); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_samplings_token_samplings_config instance with the input params + let mining_samplings_token_samplings_config_instance = MiningSamplingTokenSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_sample_block: token_sample_block.clone(), + token_sample_locked_amount: token_sample_locked_amount.clone(), + }; + + >::insert( + (mining_setting_token_id, mining_samplings_token_id), + &mining_samplings_token_samplings_config_instance + ); + + info!("Checking inserted values"); + let fetched_mining_samplings_token_samplings_config = >::get((mining_setting_token_id, mining_samplings_token_id)); + if let Some(_mining_samplings_token_samplings_config) = fetched_mining_samplings_token_samplings_config { + info!("Inserted field token_sample_block {:#?}", _mining_samplings_token_samplings_config.token_sample_block); + info!("Inserted field token_sample_locked_amount {:#?}", _mining_samplings_token_samplings_config.token_sample_locked_amount); + } + } + + Self::deposit_event(RawEvent::MiningSamplingTokenSettingSet( + sender, + mining_setting_token_id, + mining_samplings_token_id, + token_sample_block, + token_sample_locked_amount, + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_sampling_to_configuration( + origin, + mining_samplings_token_id: T::MiningSamplingTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given configuration id already exists + let is_configuration_token = > + ::exists_mining_setting_token(mining_setting_token_id).is_ok(); + ensure!(is_configuration_token, "configuration_token does not exist"); + + // Ensure that caller of the function is the owner of the configuration id to assign the sampling to + ensure!( + >::is_mining_setting_token_owner(mining_setting_token_id, sender.clone()).is_ok(), + "Only the configuration_token owner can assign itself a sampling" + ); + + Self::associate_token_sampling_with_configuration(mining_samplings_token_id, mining_setting_token_id) + .expect("Unable to associate sampling with configuration"); + + // Ensure that the given mining_samplings_token_id already exists + let token_sampling = Self::mining_samplings_token(mining_samplings_token_id); + ensure!(token_sampling.is_some(), "Invalid mining_samplings_token_id"); + + // // Ensure that the sampling is not already owned by a different configuration + // // Unassign the sampling from any existing configuration since it may only be owned by one configuration + // >::remove(mining_samplings_token_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(mining_samplings_token_id, mining_setting_token_id); + + Self::deposit_event(RawEvent::AssignedTokenSamplingToConfiguration(sender, mining_samplings_token_id, mining_setting_token_id)); + } + } +} + +impl Module { + pub fn is_mining_samplings_token_owner( + mining_samplings_token_id: T::MiningSamplingTokenIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_samplings_token_owner(&mining_samplings_token_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of MiningSamplingToken" + ); + Ok(()) + } + + pub fn exists_mining_samplings_token( + mining_samplings_token_id: T::MiningSamplingTokenIndex, + ) -> Result { + match Self::mining_samplings_token(mining_samplings_token_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningSamplingToken does not exist")), + } + } + + pub fn exists_mining_samplings_token_samplings_config( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_samplings_token_id: T::MiningSamplingTokenIndex, + ) -> Result<(), DispatchError> { + match Self::mining_samplings_token_samplings_configs((mining_setting_token_id, mining_samplings_token_id)) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningSamplingTokenSetting does not exist")), + } + } + + pub fn has_value_for_mining_samplings_token_samplings_config_index( + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_samplings_token_id: T::MiningSamplingTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_samplings_token_samplings_config has a value that is defined"); + let fetched_mining_samplings_token_samplings_config = + >::get((mining_setting_token_id, mining_samplings_token_id)); + if let Some(_value) = fetched_mining_samplings_token_samplings_config { + info!("Found value for mining_samplings_token_samplings_config"); + return Ok(()); + } + warn!("No value for mining_samplings_token_samplings_config"); + Err(DispatchError::Other("No value for mining_samplings_token_samplings_config")) + } + + /// Only push the sampling id onto the end of the vector if it does not already exist + pub fn associate_token_sampling_with_configuration( + mining_samplings_token_id: T::MiningSamplingTokenIndex, + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given configuration id already exists as a key, + // and where its corresponding value is a vector that already contains the given sampling id + if let Some(configuration_samplings) = Self::token_setting_samplings(mining_setting_token_id) { + info!( + "Configuration id key {:?} exists with value {:?}", + mining_setting_token_id, + configuration_samplings + ); + let not_configuration_contains_sampling = !configuration_samplings.contains(&mining_samplings_token_id); + ensure!(not_configuration_contains_sampling, "Configuration already contains the given sampling id"); + info!("Configuration id key exists but its vector value does not contain the given sampling id"); + >::mutate(mining_setting_token_id, |v| { + if let Some(value) = v { + value.push(mining_samplings_token_id); + } + }); + info!( + "Associated sampling {:?} with configuration {:?}", + mining_samplings_token_id, + mining_setting_token_id + ); + Ok(()) + } else { + info!( + "Configuration id key does not yet exist. Creating the configuration key {:?} and appending the \ + sampling id {:?} to its vector value", + mining_setting_token_id, + mining_samplings_token_id + ); + >::insert(mining_setting_token_id, &vec![mining_samplings_token_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_samplings_token_id() -> Result { + let mining_samplings_token_id = Self::mining_samplings_token_count(); + if mining_samplings_token_id == ::max_value() { + return Err(DispatchError::Other("MiningSamplingToken count overflow")); + } + Ok(mining_samplings_token_id) + } + + fn insert_mining_samplings_token( + owner: &T::AccountId, + mining_samplings_token_id: T::MiningSamplingTokenIndex, + mining_samplings_token: MiningSamplingToken, + ) { + // Create and store mining mining_samplings_token + >::insert(mining_samplings_token_id, mining_samplings_token); + >::put(mining_samplings_token_id + One::one()); + >::insert(mining_samplings_token_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_samplings_token_id: T::MiningSamplingTokenIndex) { + >::insert(mining_samplings_token_id, to); + } +} diff --git a/pallets/mining/sampling/token/src/mock.rs b/pallets/mining/sampling/token/src/mock.rs new file mode 100644 index 00000000..131c2da2 --- /dev/null +++ b/pallets/mining/sampling/token/src/mock.rs @@ -0,0 +1,135 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl mining_setting_token::Config for Test { + type Event = (); + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingTokenIndex = u64; + type MiningSettingTokenLockAmount = u64; + // Mining Speed Boost Token Mining Config + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingTokenType = Vec; +} +impl Config for Test { + type Event = (); + type MiningSamplingTokenIndex = u64; + type MiningSamplingTokenSampleLockedAmount = u64; +} + +pub type MiningSamplingTokenTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/sampling/token/src/tests.rs b/pallets/mining/sampling/token/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/sampling/token/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/setting/hardware/Cargo.toml b/pallets/mining/setting/hardware/Cargo.toml new file mode 100644 index 00000000..11801441 --- /dev/null +++ b/pallets/mining/setting/hardware/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = 'mining-setting-hardware' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/setting/hardware/src/benchmarking.rs b/pallets/mining/setting/hardware/src/benchmarking.rs new file mode 100644 index 00000000..32cf93cc --- /dev/null +++ b/pallets/mining/setting/hardware/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningSettingHardware; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningSettingHardware, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/setting/hardware/src/lib.rs b/pallets/mining/setting/hardware/src/lib.rs new file mode 100644 index 00000000..5e01c288 --- /dev/null +++ b/pallets/mining/setting/hardware/src/lib.rs @@ -0,0 +1,352 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config { + type Event: From> + Into<::Event>; + type MiningSettingHardwareIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure: Parameter + Member + Default + Copy; // bool + type MiningSettingHardwareType: Parameter + Member + Default; + type MiningSettingHardwareID: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type MiningSettingHardwareDevEUI: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // // Mining Speed Boost Reward + // type MiningClaimAmount: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // type MiningClaimDateRedeemed: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +// type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningSettingHardware(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningSettingHardwareSetting { + pub hardware_secure: U, + pub hardware_type: V, + pub hardware_id: W, + pub hardware_dev_eui: X, + pub hardware_lock_start_block: Y, + pub hardware_lock_interval_blocks: Z, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningSettingHardwareIndex, + ::MiningSettingHardwareSecure, + ::MiningSettingHardwareType, + ::MiningSettingHardwareID, + ::MiningSettingHardwareDevEUI, + ::BlockNumber, + // Balance = BalanceOf, + { + /// A mining_setting_hardware is created. (owner, mining_setting_hardware_id) + Created(AccountId, MiningSettingHardwareIndex), + /// A mining_setting_hardware is transferred. (from, to, mining_setting_hardware_id) + Transferred(AccountId, AccountId, MiningSettingHardwareIndex), + MiningSettingHardwareSettingSet( + AccountId, MiningSettingHardwareIndex, MiningSettingHardwareSecure, + MiningSettingHardwareType, MiningSettingHardwareID, + MiningSettingHardwareDevEUI, BlockNumber, BlockNumber + ), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningSettingHardware { + /// Stores all the mining_setting_hardwares, key is the mining_setting_hardware id / index + pub MiningSettingHardwares get(fn mining_setting_hardware): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => Option; + + /// Stores the total number of mining_setting_hardwares. i.e. the next mining_setting_hardware index + pub MiningSettingHardwareCount get(fn mining_setting_hardware_count): T::MiningSettingHardwareIndex; + + /// Stores mining_setting_hardware owner + pub MiningSettingHardwareOwners get(fn mining_setting_hardware_owner): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => Option; + + /// Stores mining_setting_hardware_hardware_config + pub MiningSettingHardwareSettings get(fn mining_setting_hardware_hardware_configs): map hasher(opaque_blake2_256) T::MiningSettingHardwareIndex => + Option>; + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_setting_hardware + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_setting_hardware_id = Self::next_mining_setting_hardware_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_setting_hardware + let mining_setting_hardware = MiningSettingHardware(unique_id); + Self::insert_mining_setting_hardware(&sender, mining_setting_hardware_id, mining_setting_hardware); + + Self::deposit_event(RawEvent::Created(sender, mining_setting_hardware_id)); + } + + /// Transfer a mining_setting_hardware to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_setting_hardware_id: T::MiningSettingHardwareIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_setting_hardware_owner(mining_setting_hardware_id) == Some(sender.clone()), "Only owner can transfer mining mining_setting_hardware"); + + Self::update_owner(&to, mining_setting_hardware_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_setting_hardware_id)); + } + + /// Set mining_setting_hardware_hardware_config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_setting_hardware_hardware_config( + origin, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + _hardware_secure: Option, + _hardware_type: Option, + _hardware_id: Option, + _hardware_dev_eui: Option, + _hardware_lock_start_block: Option, + _hardware_lock_interval_blocks: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_setting_hardware_id whose config we want to change actually exists + let is_mining_setting_hardware = Self::exists_mining_setting_hardware(mining_setting_hardware_id).is_ok(); + ensure!(is_mining_setting_hardware, "MiningSettingHardware does not exist"); + + // Ensure that the caller is owner of the mining_setting_hardware_hardware_config they are trying to change + ensure!(Self::mining_setting_hardware_owner(mining_setting_hardware_id) == Some(sender.clone()), "Only owner can set mining_setting_hardware_hardware_config"); + + let hardware_secure = match _hardware_secure.clone() { + Some(value) => value, + None => Default::default() // Default + }; + let hardware_type = match _hardware_type { + Some(value) => value, + // FIXME - get this fallback to work! + // None => b"gateway".to_vec() // Default + None => Default::default() // Default + }; + let hardware_id = match _hardware_id { + Some(value) => value, + None => 3u32.into() // Default + }; + let hardware_dev_eui = match _hardware_dev_eui { + Some(value) => value, + None => Default::default() // Default + }; + let hardware_lock_start_block = match _hardware_lock_start_block { + Some(value) => value, + None => Default::default() // Default + }; + let hardware_lock_interval_blocks = match _hardware_lock_interval_blocks { + Some(value) => value, + None => Default::default() // Default + }; + + // Check if a mining_setting_hardware_hardware_config already exists with the given mining_setting_hardware_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_setting_hardware_hardware_config_index(mining_setting_hardware_id).is_ok() { + info!("Mutating values"); + // TODO + >::mutate(mining_setting_hardware_id, |mining_setting_hardware_hardware_config| { + if let Some(_mining_setting_hardware_hardware_config) = mining_setting_hardware_hardware_config { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_setting_hardware_hardware_config.hardware_secure = hardware_secure.clone(); + _mining_setting_hardware_hardware_config.hardware_type = hardware_type.clone(); + _mining_setting_hardware_hardware_config.hardware_id = hardware_id.clone(); + _mining_setting_hardware_hardware_config.hardware_dev_eui = hardware_dev_eui.clone(); + _mining_setting_hardware_hardware_config.hardware_lock_start_block = hardware_lock_start_block.clone(); + _mining_setting_hardware_hardware_config.hardware_lock_interval_blocks = hardware_lock_interval_blocks.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_setting_hardware_hardware_config = >::get(mining_setting_hardware_id); + if let Some(_mining_setting_hardware_hardware_config) = fetched_mining_setting_hardware_hardware_config { + info!("Latest field hardware_secure {:#?}", _mining_setting_hardware_hardware_config.hardware_secure); + info!("Latest field hardware_type {:#?}", _mining_setting_hardware_hardware_config.hardware_type); + info!("Latest field hardware_id {:#?}", _mining_setting_hardware_hardware_config.hardware_id); + info!("Latest field hardware_dev_eui {:#?}", _mining_setting_hardware_hardware_config.hardware_dev_eui); + info!("Latest field hardware_lock_start_block {:#?}", _mining_setting_hardware_hardware_config.hardware_lock_start_block); + info!("Latest field hardware_lock_interval_blocks {:#?}", _mining_setting_hardware_hardware_config.hardware_lock_interval_blocks); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_setting_hardware_hardware_config instance with the input params + let mining_setting_hardware_hardware_config_instance = MiningSettingHardwareSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + hardware_secure: hardware_secure.clone(), + hardware_type: hardware_type.clone(), + hardware_id: hardware_id.clone(), + hardware_dev_eui: hardware_dev_eui.clone(), + hardware_lock_start_block: hardware_lock_start_block.clone(), + hardware_lock_interval_blocks: hardware_lock_interval_blocks.clone(), + }; + + >::insert( + mining_setting_hardware_id, + &mining_setting_hardware_hardware_config_instance + ); + + info!("Checking inserted values"); + let fetched_mining_setting_hardware_hardware_config = >::get(mining_setting_hardware_id); + if let Some(_mining_setting_hardware_hardware_config) = fetched_mining_setting_hardware_hardware_config { + info!("Inserted field hardware_secure {:#?}", _mining_setting_hardware_hardware_config.hardware_secure); + info!("Inserted field hardware_type {:#?}", _mining_setting_hardware_hardware_config.hardware_type); + info!("Inserted field hardware_id {:#?}", _mining_setting_hardware_hardware_config.hardware_id); + info!("Inserted field hardware_dev_eui {:#?}", _mining_setting_hardware_hardware_config.hardware_dev_eui); + info!("Inserted field hardware_lock_start_block {:#?}", _mining_setting_hardware_hardware_config.hardware_lock_start_block); + info!("Inserted field hardware_lock_interval_blocks {:#?}", _mining_setting_hardware_hardware_config.hardware_lock_interval_blocks); + } + } + + Self::deposit_event(RawEvent::MiningSettingHardwareSettingSet( + sender, + mining_setting_hardware_id, + hardware_secure, + hardware_type, + hardware_id, + hardware_dev_eui, + hardware_lock_start_block, + hardware_lock_interval_blocks, + )); + } + } +} + +impl Module { + pub fn is_mining_setting_hardware_owner( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_setting_hardware_owner(&mining_setting_hardware_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of Mining" + ); + Ok(()) + } + + pub fn exists_mining_setting_hardware( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result { + match Self::mining_setting_hardware(mining_setting_hardware_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningSettingHardware does not exist")), + } + } + + pub fn exists_mining_setting_hardware_hardware_config( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result<(), DispatchError> { + match Self::mining_setting_hardware_hardware_configs(mining_setting_hardware_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningSettingHardwareSetting does not exist")), + } + } + + pub fn has_value_for_mining_setting_hardware_hardware_config_index( + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_setting_hardware_hardware_config has a value that is defined"); + let fetched_mining_setting_hardware_hardware_config = + >::get(mining_setting_hardware_id); + if let Some(_value) = fetched_mining_setting_hardware_hardware_config { + info!("Found value for mining_setting_hardware_hardware_config"); + return Ok(()); + } + warn!("No value for mining_setting_hardware_hardware_config"); + Err(DispatchError::Other("No value for mining_setting_hardware_hardware_config")) + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_setting_hardware_id() -> Result { + let mining_setting_hardware_id = Self::mining_setting_hardware_count(); + if mining_setting_hardware_id == ::max_value() { + return Err(DispatchError::Other("MiningSettingHardware count overflow")); + } + Ok(mining_setting_hardware_id) + } + + fn insert_mining_setting_hardware( + owner: &T::AccountId, + mining_setting_hardware_id: T::MiningSettingHardwareIndex, + mining_setting_hardware: MiningSettingHardware, + ) { + // Create and store mining mining_setting_hardware + >::insert(mining_setting_hardware_id, mining_setting_hardware); + >::put(mining_setting_hardware_id + One::one()); + >::insert(mining_setting_hardware_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_setting_hardware_id: T::MiningSettingHardwareIndex) { + >::insert(mining_setting_hardware_id, to); + } +} diff --git a/pallets/mining/setting/hardware/src/mock.rs b/pallets/mining/setting/hardware/src/mock.rs new file mode 100644 index 00000000..c2dd6097 --- /dev/null +++ b/pallets/mining/setting/hardware/src/mock.rs @@ -0,0 +1,131 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl Config for Test { + type Event = (); + type MiningSettingHardwareDevEUI = u64; + // type MiningSettingHardwareType = + // MiningSettingHardwareTypes; + type MiningSettingHardwareID = u64; + type MiningSettingHardwareIndex = u64; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure = bool; + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingHardwareType = Vec; +} + +pub type MiningSettingHardwareTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/setting/hardware/src/tests.rs b/pallets/mining/setting/hardware/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/setting/hardware/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/mining/setting/token/Cargo.toml b/pallets/mining/setting/token/Cargo.toml new file mode 100644 index 00000000..13408296 --- /dev/null +++ b/pallets/mining/setting/token/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = 'mining-setting-token' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../../roaming/roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/mining/setting/token/src/benchmarking.rs b/pallets/mining/setting/token/src/benchmarking.rs new file mode 100644 index 00000000..d388febc --- /dev/null +++ b/pallets/mining/setting/token/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as MiningSettingToken; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(MiningSettingToken, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/mining/setting/token/src/lib.rs b/pallets/mining/setting/token/src/lib.rs new file mode 100644 index 00000000..2bc39987 --- /dev/null +++ b/pallets/mining/setting/token/src/lib.rs @@ -0,0 +1,440 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +// FIXME - remove roaming_operators here, only use this approach since do not know how to use BalanceOf using only +// mining runtime module + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config { + type Event: From> + Into<::Event>; + type MiningSettingTokenIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + // Mining Speed Boost Token Mining Config + type MiningSettingTokenType: Parameter + Member + Default; + type MiningSettingTokenLockAmount: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MiningSettingToken(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningSettingTokenSetting { + pub token_type: U, + pub token_lock_amount: V, + pub token_lock_start_block: W, + pub token_lock_interval_blocks: X, // FIXME - why need end date if already have start date and period +} + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +pub struct MiningSettingTokenRequirementsSetting { + pub token_type: U, + pub token_lock_min_amount: V, /* Balance used instead of + * MiningSettingTokenTokenLockMinAmount */ + pub token_lock_min_blocks: W, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::MiningSettingTokenIndex, + ::MiningSettingTokenType, + ::BlockNumber, + Balance = BalanceOf, + { + /// A mining_setting_token is created. (owner, mining_setting_token_id) + Created(AccountId, MiningSettingTokenIndex), + /// A mining_setting_token is transferred. (from, to, mining_setting_token_id) + Transferred(AccountId, AccountId, MiningSettingTokenIndex), + MiningSettingTokenSettingSet( + AccountId, MiningSettingTokenIndex, MiningSettingTokenType, Balance, BlockNumber, BlockNumber + ), + MiningSettingTokenRequirementsSettingSet( + AccountId, MiningSettingTokenIndex, MiningSettingTokenType, Balance, + BlockNumber + ), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as MiningSettingToken { + /// Stores all the mining_setting_tokens, key is the mining_setting_token id / index + pub MiningSettingTokens get(fn mining_setting_token): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => Option; + + /// Stores the total number of mining_setting_tokens. i.e. the next mining_setting_token index + pub MiningSettingTokenCount get(fn mining_setting_token_count): T::MiningSettingTokenIndex; + + /// Stores mining_setting_token owner + pub MiningSettingTokenOwners get(fn mining_setting_token_owner): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => Option; + + /// Stores mining_setting_token_token_setting + pub MiningSettingTokenSettings get(fn mining_setting_token_token_settings): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => + Option, T::BlockNumber, T::BlockNumber>>; + + /// Stores mining_setting_token_token_cooldown_config + pub MiningSettingTokenRequirementsSettings get(fn mining_setting_token_token_cooldown_configs): map hasher(opaque_blake2_256) T::MiningSettingTokenIndex => + Option, T::BlockNumber>>; + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new mining mining_setting_token + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let mining_setting_token_id = Self::next_mining_setting_token_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store mining_setting_token + let mining_setting_token = MiningSettingToken(unique_id); + Self::insert_mining_setting_token(&sender, mining_setting_token_id, mining_setting_token); + + Self::deposit_event(RawEvent::Created(sender, mining_setting_token_id)); + } + + /// Transfer a mining_setting_token to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, mining_setting_token_id: T::MiningSettingTokenIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::mining_setting_token_owner(mining_setting_token_id) == Some(sender.clone()), "Only owner can transfer mining mining_setting_token"); + + Self::update_owner(&to, mining_setting_token_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, mining_setting_token_id)); + } + + /// Set mining_setting_token_token_setting + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_setting_token_token_setting( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + _token_type: Option, + _token_lock_amount: Option>, + _token_lock_start_block: Option, + _token_lock_interval_blocks: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_setting_token_id whose config we want to change actually exists + let is_mining_setting_token = Self::exists_mining_setting_token(mining_setting_token_id).is_ok(); + ensure!(is_mining_setting_token, "MiningSettingToken does not exist"); + + // Ensure that the caller is owner of the mining_setting_token_token_setting they are trying to change + ensure!(Self::mining_setting_token_owner(mining_setting_token_id) == Some(sender.clone()), "Only owner can set mining_setting_token_token_setting"); + + let mut default_token_type = Default::default(); + let mut default_token_lock_min_amount = Default::default(); + let mut default_token_lock_min_blocks = Default::default(); + let mut fetched_mining_setting_token_token_cooldown_config = >::get(mining_setting_token_id); + if let Some(_mining_setting_token_token_cooldown_config) = fetched_mining_setting_token_token_cooldown_config { + default_token_type = _mining_setting_token_token_cooldown_config.token_type; + default_token_lock_min_amount = _mining_setting_token_token_cooldown_config.token_lock_min_amount; + default_token_lock_min_blocks = _mining_setting_token_token_cooldown_config.token_lock_min_blocks; + } + + let token_type = match _token_type.clone() { + Some(value) => value, + None => default_token_type + }; + let token_lock_amount = match _token_lock_amount { + Some(value) => value, + None => default_token_lock_min_amount + }; + let token_lock_start_block = match _token_lock_start_block { + Some(value) => value, + None => >::block_number() + }; + let token_lock_interval_blocks = match _token_lock_interval_blocks { + Some(value) => value, + None => default_token_lock_min_blocks + }; + + // Check if a mining_setting_token_token_setting already exists with the given mining_setting_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_setting_token_token_setting_index(mining_setting_token_id).is_ok() { + info!("Mutating values"); + >::mutate(mining_setting_token_id, |mining_setting_token_token_setting| { + if let Some(_mining_setting_token_token_setting) = mining_setting_token_token_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_setting_token_token_setting.token_type = token_type.clone(); + _mining_setting_token_token_setting.token_lock_amount = token_lock_amount.clone(); + _mining_setting_token_token_setting.token_lock_start_block = token_lock_start_block.clone(); + _mining_setting_token_token_setting.token_lock_interval_blocks = token_lock_interval_blocks.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_setting_token_token_setting = >::get(mining_setting_token_id); + if let Some(_mining_setting_token_token_setting) = fetched_mining_setting_token_token_setting { + info!("Latest field token_type {:#?}", _mining_setting_token_token_setting.token_type); + info!("Latest field token_lock_amount {:#?}", _mining_setting_token_token_setting.token_lock_amount); + info!("Latest field token_lock_start_block {:#?}", _mining_setting_token_token_setting.token_lock_start_block); + info!("Latest field token_lock_interval_blocks {:#?}", _mining_setting_token_token_setting.token_lock_interval_blocks); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_setting_token_token_setting instance with the input params + let mining_setting_token_token_setting_instance = MiningSettingTokenSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_type: token_type.clone(), + token_lock_amount: token_lock_amount.clone(), + token_lock_start_block: token_lock_start_block.clone(), + token_lock_interval_blocks: token_lock_interval_blocks.clone() + }; + + >::insert( + mining_setting_token_id, + &mining_setting_token_token_setting_instance + ); + + info!("Checking inserted values"); + let fetched_mining_setting_token_token_setting = >::get(mining_setting_token_id); + if let Some(_mining_setting_token_token_setting) = fetched_mining_setting_token_token_setting { + info!("Inserted field token_type {:#?}", _mining_setting_token_token_setting.token_type); + info!("Inserted field token_lock_amount {:#?}", _mining_setting_token_token_setting.token_lock_amount); + info!("Inserted field token_lock_start_block {:#?}", _mining_setting_token_token_setting.token_lock_start_block); + info!("Inserted field token_lock_interval_blocks {:#?}", _mining_setting_token_token_setting.token_lock_interval_blocks); + } + } + + Self::deposit_event(RawEvent::MiningSettingTokenSettingSet( + sender, + mining_setting_token_id, + token_type, + token_lock_amount, + token_lock_start_block, + token_lock_interval_blocks + )); + } + + + /// Set mining_setting_token_token_cooldown_config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_mining_setting_token_token_cooldown_config( + origin, + mining_setting_token_id: T::MiningSettingTokenIndex, + _token_type: Option, + _token_lock_min_amount: Option>, + _token_lock_min_blocks: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the mining_setting_token_id whose config we want to change actually exists + let is_mining_setting_token = Self::exists_mining_setting_token(mining_setting_token_id).is_ok(); + ensure!(is_mining_setting_token, "MiningSettingToken does not exist"); + + // Ensure that the caller is owner of the mining_setting_token_token_setting they are trying to change + ensure!(Self::mining_setting_token_owner(mining_setting_token_id) == Some(sender.clone()), "Only owner can set mining_setting_token_token_cooldown_config"); + + let token_type = match _token_type.clone() { + Some(value) => value, + None => Default::default() // Default + }; + let token_lock_min_amount = match _token_lock_min_amount { + Some(value) => value, + None => 10u32.into() // Default + }; + let token_lock_min_blocks = match _token_lock_min_blocks { + Some(value) => value, + None => 7u32.into() // Default + }; + + // Check if a mining_setting_token_token_cooldown_config already exists with the given mining_setting_token_id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_mining_setting_token_token_cooldown_config_index(mining_setting_token_id).is_ok() { + info!("Mutating values"); + >::mutate(mining_setting_token_id, |mining_setting_token_token_cooldown_config| { + if let Some(_mining_setting_token_token_cooldown_config) = mining_setting_token_token_cooldown_config { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _mining_setting_token_token_cooldown_config.token_type = token_type.clone(); + _mining_setting_token_token_cooldown_config.token_lock_min_amount = token_lock_min_amount.clone(); + _mining_setting_token_token_cooldown_config.token_lock_min_blocks = token_lock_min_blocks.clone(); + } + }); + info!("Checking mutated values"); + let fetched_mining_setting_token_token_cooldown_config = >::get(mining_setting_token_id); + if let Some(_mining_setting_token_token_cooldown_config) = fetched_mining_setting_token_token_cooldown_config { + info!("Latest field token_type {:#?}", _mining_setting_token_token_cooldown_config.token_type); + info!("Latest field token_lock_min_amount {:#?}", _mining_setting_token_token_cooldown_config.token_lock_min_amount); + info!("Latest field token_lock_min_blocks {:#?}", _mining_setting_token_token_cooldown_config.token_lock_min_blocks); + } + } else { + info!("Inserting values"); + + // Create a new mining mining_setting_token_token_cooldown_config instance with the input params + let mining_setting_token_token_cooldown_config_instance = MiningSettingTokenRequirementsSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + token_type: token_type.clone(), + token_lock_min_amount: token_lock_min_amount.clone(), + token_lock_min_blocks: token_lock_min_blocks.clone(), + }; + + >::insert( + mining_setting_token_id, + &mining_setting_token_token_cooldown_config_instance + ); + + info!("Checking inserted values"); + let fetched_mining_setting_token_token_cooldown_config = >::get(mining_setting_token_id); + if let Some(_mining_setting_token_token_cooldown_config) = fetched_mining_setting_token_token_cooldown_config { + info!("Inserted field token_type {:#?}", _mining_setting_token_token_cooldown_config.token_type); + info!("Inserted field token_lock_min_amount {:#?}", _mining_setting_token_token_cooldown_config.token_lock_min_amount); + info!("Inserted field token_lock_min_blocks {:#?}", _mining_setting_token_token_cooldown_config.token_lock_min_blocks); + } + } + + Self::deposit_event(RawEvent::MiningSettingTokenRequirementsSettingSet( + sender, + mining_setting_token_id, + token_type, + token_lock_min_amount, + token_lock_min_blocks, + )); + } + } +} + +impl Module { + pub fn is_mining_setting_token_owner( + mining_setting_token_id: T::MiningSettingTokenIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::mining_setting_token_owner(&mining_setting_token_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of Mining" + ); + Ok(()) + } + + pub fn exists_mining_setting_token( + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result { + match Self::mining_setting_token(mining_setting_token_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("MiningSettingToken does not exist")), + } + } + + pub fn exists_mining_setting_token_token_setting( + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + match Self::mining_setting_token_token_settings(mining_setting_token_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("MiningSettingTokenSetting does not exist")), + } + } + + pub fn has_value_for_mining_setting_token_token_setting_index( + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_setting_token_token_setting has a value that is defined"); + let fetched_mining_setting_token_token_setting = >::get(mining_setting_token_id); + if let Some(_value) = fetched_mining_setting_token_token_setting { + info!("Found value for mining_setting_token_token_setting"); + return Ok(()); + } + warn!("No value for mining_setting_token_token_setting"); + Err(DispatchError::Other("No value for mining_setting_token_token_setting")) + } + + pub fn has_value_for_mining_setting_token_token_cooldown_config_index( + mining_setting_token_id: T::MiningSettingTokenIndex, + ) -> Result<(), DispatchError> { + info!("Checking if mining_setting_token_token_cooldown_config has a value that is defined"); + let fetched_mining_setting_token_token_cooldown_config = + >::get(mining_setting_token_id); + if let Some(_value) = fetched_mining_setting_token_token_cooldown_config { + info!("Found value for mining_setting_token_token_cooldown_config"); + return Ok(()); + } + warn!("No value for mining_setting_token_token_cooldown_config"); + Err(DispatchError::Other("No value for mining_setting_token_token_cooldown_config")) + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_mining_setting_token_id() -> Result { + let mining_setting_token_id = Self::mining_setting_token_count(); + if mining_setting_token_id == ::max_value() { + return Err(DispatchError::Other("MiningSettingToken count overflow")); + } + Ok(mining_setting_token_id) + } + + fn insert_mining_setting_token( + owner: &T::AccountId, + mining_setting_token_id: T::MiningSettingTokenIndex, + mining_setting_token: MiningSettingToken, + ) { + // Create and store mining mining_setting_token + >::insert(mining_setting_token_id, mining_setting_token); + >::put(mining_setting_token_id + One::one()); + >::insert(mining_setting_token_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, mining_setting_token_id: T::MiningSettingTokenIndex) { + >::insert(mining_setting_token_id, to); + } +} diff --git a/pallets/mining/setting/token/src/mock.rs b/pallets/mining/setting/token/src/mock.rs new file mode 100644 index 00000000..f361aa8c --- /dev/null +++ b/pallets/mining/setting/token/src/mock.rs @@ -0,0 +1,127 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +// FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl Config for Test { + type Event = (); + type MiningSettingTokenIndex = u64; + type MiningSettingTokenLockAmount = u64; + // Mining Speed Boost Token Mining Config + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingTokenType = Vec; +} + +pub type MiningSettingTokenTestModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/mining/setting/token/src/tests.rs b/pallets/mining/setting/token/src/tests.rs new file mode 100644 index 00000000..c92640f2 --- /dev/null +++ b/pallets/mining/setting/token/src/tests.rs @@ -0,0 +1,6 @@ +// Tests to be written here + +// #[test] +// fn my_test() { +// // Add test here +// } diff --git a/pallets/primitives/Cargo.toml b/pallets/primitives/Cargo.toml index 06eefb20..2588bd9d 100644 --- a/pallets/primitives/Cargo.toml +++ b/pallets/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = 'module-primitives' -version = '3.0.7' +version = '3.0.6' authors = ['Laminar Developers ', 'MXC Foundation GmbH ', 'Luke Schoen'] edition = '2021' diff --git a/pallets/roaming/roaming-accounting-policies/Cargo.toml b/pallets/roaming/roaming-accounting-policies/Cargo.toml new file mode 100644 index 00000000..b3c4f1cb --- /dev/null +++ b/pallets/roaming/roaming-accounting-policies/Cargo.toml @@ -0,0 +1,53 @@ +[package] +name = 'roaming-accounting-policies' +version = '1.0.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-accounting-policies/src/benchmarking.rs b/pallets/roaming/roaming-accounting-policies/src/benchmarking.rs new file mode 100644 index 00000000..4f62a34b --- /dev/null +++ b/pallets/roaming/roaming-accounting-policies/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingAccountingPolicies; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingAccountingPolicies, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-accounting-policies/src/lib.rs b/pallets/roaming/roaming-accounting-policies/src/lib.rs new file mode 100644 index 00000000..638acbc6 --- /dev/null +++ b/pallets/roaming/roaming-accounting-policies/src/lib.rs @@ -0,0 +1,416 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_networks::Config { + type Event: From> + Into<::Event>; + type RoamingAccountingPolicyIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingAccountingPolicyType: Parameter + Member + Default; + type RoamingAccountingPolicyUplinkFeeFactor: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingAccountingPolicyDownlinkFeeFactor: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingAccountingPolicy(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingAccountingPolicySetting { + pub policy_type: U, // "adhoc" or "subscription" + pub subscription_fee: V, + pub uplink_fee_factor: W, + pub downlink_fee_factor: X, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingAccountingPolicyIndex, + ::RoamingAccountingPolicyType, + ::RoamingAccountingPolicyUplinkFeeFactor, + ::RoamingAccountingPolicyDownlinkFeeFactor, + ::RoamingNetworkIndex, + Balance = BalanceOf, + { + /// A roaming accounting_policy is created. (owner, roaming_accounting_policy_id) + Created(AccountId, RoamingAccountingPolicyIndex), + /// A roaming accounting_policy is transferred. (from, to, roaming_accounting_policy_id) + Transferred(AccountId, AccountId, RoamingAccountingPolicyIndex), + /// A roaming accounting_policy configuration + RoamingAccountingPolicySettingSet(AccountId, RoamingAccountingPolicyIndex, RoamingAccountingPolicyType, Balance, RoamingAccountingPolicyUplinkFeeFactor, RoamingAccountingPolicyDownlinkFeeFactor), + /// A roaming accounting_policy is assigned to a network. (owner of network, roaming_accounting_policy_id, roaming_network_id) + AssignedAccountingPolicyToNetwork(AccountId, RoamingAccountingPolicyIndex, RoamingNetworkIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingAccountingPolicies { + /// Stores all the roaming accounting_policies, key is the roaming accounting_policy id / index + pub RoamingAccountingPolicies get(fn roaming_accounting_policy): map hasher(opaque_blake2_256) T::RoamingAccountingPolicyIndex => Option; + + /// Stores the total number of roaming accounting_policies. i.e. the next roaming accounting_policy index + pub RoamingAccountingPoliciesCount get(fn roaming_accounting_policies_count): T::RoamingAccountingPolicyIndex; + + /// Get roaming accounting_policy owner + pub RoamingAccountingPolicyOwners get(fn roaming_accounting_policy_owner): map hasher(opaque_blake2_256) T::RoamingAccountingPolicyIndex => Option; + + /// Get roaming accounting_policy config + pub RoamingAccountingPolicySettings get(fn roaming_accounting_policy_settings): map hasher(opaque_blake2_256) T::RoamingAccountingPolicyIndex => Option, T::RoamingAccountingPolicyUplinkFeeFactor, T::RoamingAccountingPolicyDownlinkFeeFactor>>; + + /// Get roaming accounting_policy network + pub RoamingAccountingPolicyNetwork get(fn roaming_accounting_policy_network): map hasher(opaque_blake2_256) T::RoamingAccountingPolicyIndex => Option; + + /// Get roaming network's accounting policies + pub RoamingNetworkAccountingPolicies get(fn roaming_network_accounting_policies): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming accounting_policy + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_accounting_policy_id = Self::next_roaming_accounting_policy_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming accounting_policy + let roaming_accounting_policy = RoamingAccountingPolicy(unique_id); + Self::insert_roaming_accounting_policy(&sender, roaming_accounting_policy_id, roaming_accounting_policy); + + Self::deposit_event(RawEvent::Created(sender, roaming_accounting_policy_id)); + } + + /// Transfer a roaming accounting_policy to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_accounting_policy_owner(roaming_accounting_policy_id) == Some(sender.clone()), "Only owner can transfer roaming accounting_policy"); + + Self::update_owner(&to, roaming_accounting_policy_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_accounting_policy_id)); + } + + /// Set roaming account_policy config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_config( + origin, + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + _policy_type: Option, // "adhoc" or "subscription" + _subscription_fee: Option>, + _uplink_fee_factor: Option, + _downlink_fee_factor: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming accounting policy id whose config we want to change actually exists + let is_roaming_accounting_policy = Self::exists_roaming_accounting_policy(roaming_accounting_policy_id).is_ok(); + ensure!(is_roaming_accounting_policy, "RoamingAccountingPolicy does not exist"); + + // Ensure that the caller is owner of the accounting policy config they are trying to change + ensure!(Self::roaming_accounting_policy_owner(roaming_accounting_policy_id) == Some(sender.clone()), "Only owner can set config for roaming accounting_policy"); + + // let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_accounting_policy_id, sender.clone()).is_ok(); + // ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let policy_type = match _policy_type.clone() { + Some(value) => value, + None => Default::default() // Default + }; + let subscription_fee = match _subscription_fee { + Some(value) => value, + None => 1u32.into() // Default + }; + let uplink_fee_factor = match _uplink_fee_factor { + Some(value) => value, + None => 1u32.into() // Default + }; + let downlink_fee_factor = match _downlink_fee_factor { + Some(value) => value, + None => 1u32.into() // Default + }; + + // Check if a roaming accounting policy config already exists with the given roaming accounting policy id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_accounting_policy_setting_index(roaming_accounting_policy_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_accounting_policy_id, |policy_setting| { + if let Some(_policy_setting) = policy_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _policy_setting.policy_type = policy_type.clone(); + _policy_setting.subscription_fee = subscription_fee.clone(); + _policy_setting.uplink_fee_factor = uplink_fee_factor.clone(); + _policy_setting.downlink_fee_factor = downlink_fee_factor.clone(); + } + }); + info!("Checking mutated values"); + let fetched_policy_setting = >::get(roaming_accounting_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Latest field policy_type {:#?}", _policy_setting.policy_type); + info!("Latest field subscription_fee {:#?}", _policy_setting.subscription_fee); + info!("Latest field uplink_fee_factor {:#?}", _policy_setting.uplink_fee_factor); + info!("Latest field downlink_fee_factor {:#?}", _policy_setting.downlink_fee_factor); + } + } else { + info!("Inserting values"); + + // Create a new roaming accounting_policy config instance with the input params + let roaming_accounting_policy_setting_instance = RoamingAccountingPolicySetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + policy_type: policy_type.clone(), + subscription_fee: subscription_fee.clone(), + uplink_fee_factor: uplink_fee_factor.clone(), + downlink_fee_factor: downlink_fee_factor.clone() + }; + + >::insert( + roaming_accounting_policy_id, + &roaming_accounting_policy_setting_instance + ); + + info!("Checking inserted values"); + let fetched_policy_setting = >::get(roaming_accounting_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Inserted field policy_type {:#?}", _policy_setting.policy_type); + info!("Inserted field subscription_fee {:#?}", _policy_setting.subscription_fee); + info!("Inserted field uplink_fee_factor {:#?}", _policy_setting.uplink_fee_factor); + info!("Inserted field downlink_fee_factor {:#?}", _policy_setting.downlink_fee_factor); + } + } + + Self::deposit_event(RawEvent::RoamingAccountingPolicySettingSet( + sender, + roaming_accounting_policy_id, + policy_type, + subscription_fee, + uplink_fee_factor, + downlink_fee_factor + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_accounting_policy_to_network( + origin, + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + // Ensure that caller of the function is the owner of the network id to assign the accounting_policy to + ensure!( + >::is_roaming_network_owner(roaming_network_id, sender.clone()).is_ok(), + "Only the roaming network owner can assign itself a roaming accounting policy" + ); + + Self::associate_accounting_policy_with_network(roaming_accounting_policy_id, roaming_network_id) + .expect("Unable to associate accounting policy with network"); + + // Ensure that the given accounting_policy id already exists + let roaming_accounting_policy = Self::roaming_accounting_policy(roaming_accounting_policy_id); + ensure!(roaming_accounting_policy.is_some(), "Invalid roaming_accounting_policy_id"); + + // Ensure that the accounting_policy is not already owned by a different network + // Unassign the accounting_policy from any existing network since it may only be owned by one network + >::remove(roaming_accounting_policy_id); + + // Assign the accounting_policy owner to the given network (even if already belongs to them) + >::insert(roaming_accounting_policy_id, roaming_network_id); + + Self::deposit_event(RawEvent::AssignedAccountingPolicyToNetwork(sender, roaming_accounting_policy_id, roaming_network_id)); + } + } +} + +impl Module { + pub fn is_roaming_accounting_policy_owner( + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_accounting_policy_owner(&roaming_accounting_policy_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of RoamingAccountingPolicy" + ); + Ok(()) + } + + // Note: Not required + // pub fn is_owned_by_required_parent_relationship(roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + // sender: T::AccountId) -> Result<(), DispatchError> { info!("Get the network id associated with the + // network of the given accounting policy id"); let accounting_policy_network_id = + // Self::roaming_accounting_policy_network(roaming_accounting_policy_id); + + // if let Some(_accounting_policy_network_id) = accounting_policy_network_id { + // // Ensure that the caller is owner of the network id associated with the accounting policy + // ensure!((>::is_roaming_network_owner( + // _accounting_policy_network_id.clone(), + // sender.clone() + // )).is_ok(), "Only owner of the network id associated with the given accounting policy can set an + // associated roaming accounting policy config" ); + // } else { + // // There must be a network id associated with the accounting policy + // return Err(DispatchError::Other("RoamingAccountingPolicyNetwork does not exist")); + // } + // Ok(()) + // } + + pub fn exists_roaming_accounting_policy( + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + ) -> Result { + match Self::roaming_accounting_policy(roaming_accounting_policy_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("RoamingAccountingPolicy does not exist")), + } + } + + pub fn exists_roaming_accounting_policy_setting( + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_accounting_policy_settings(roaming_accounting_policy_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("RoamingAccountingPolicySetting does not exist")), + } + } + + pub fn has_value_for_accounting_policy_setting_index( + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + ) -> Result<(), DispatchError> { + info!("Checking if accounting policy config has a value that is defined"); + let fetched_policy_setting = >::get(roaming_accounting_policy_id); + if let Some(_value) = fetched_policy_setting { + info!("Found value for accounting policy config"); + return Ok(()); + } + warn!("No value for accounting policy config"); + Err(DispatchError::Other("No value for accounting policy config")) + } + + /// Only push the accounting policy id onto the end of the vector if it does not already exist + pub fn associate_accounting_policy_with_network( + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network id already exists as a key, + // and where its corresponding value is a vector that already contains the given accounting policy id + if let Some(network_accounting_policies) = Self::roaming_network_accounting_policies(roaming_network_id) { + info!("Network id key {:?} exists with value {:?}", roaming_network_id, network_accounting_policies); + let not_network_contains_accounting_policy = + !network_accounting_policies.contains(&roaming_accounting_policy_id); + ensure!(not_network_contains_accounting_policy, "Network already contains the given accounting policy id"); + info!("Network id key exists but its vector value does not contain the given accounting policy id"); + >::mutate(roaming_network_id, |v| { + if let Some(value) = v { + value.push(roaming_accounting_policy_id); + } + }); + info!( + "Associated accounting policy {:?} with network {:?}", + roaming_accounting_policy_id, + roaming_network_id + ); + Ok(()) + } else { + info!( + "Network id key does not yet exist. Creating the network key {:?} and appending the accounting policy \ + id {:?} to its vector value", + roaming_network_id, + roaming_accounting_policy_id + ); + >::insert(roaming_network_id, &vec![roaming_accounting_policy_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_accounting_policy_id() -> Result { + let roaming_accounting_policy_id = Self::roaming_accounting_policies_count(); + if roaming_accounting_policy_id == ::max_value() { + return Err(DispatchError::Other("RoamingAccountingPolicies count overflow")); + } + Ok(roaming_accounting_policy_id) + } + + fn insert_roaming_accounting_policy( + owner: &T::AccountId, + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + roaming_accounting_policy: RoamingAccountingPolicy, + ) { + // Create and store roaming accounting_policy + >::insert(roaming_accounting_policy_id, roaming_accounting_policy); + >::put(roaming_accounting_policy_id + One::one()); + >::insert(roaming_accounting_policy_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex) { + >::insert(roaming_accounting_policy_id, to); + } +} diff --git a/pallets/roaming/roaming-accounting-policies/src/mock.rs b/pallets/roaming/roaming-accounting-policies/src/mock.rs new file mode 100644 index 00000000..afb9fe03 --- /dev/null +++ b/pallets/roaming/roaming-accounting-policies/src/mock.rs @@ -0,0 +1,129 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingAccountingPolicyDownlinkFeeFactor = u32; + type RoamingAccountingPolicyIndex = u64; + type RoamingAccountingPolicyType = Vec; + type RoamingAccountingPolicyUplinkFeeFactor = u32; +} + +pub type RoamingAccountingPolicyModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-accounting-policies/src/tests.rs b/pallets/roaming/roaming-accounting-policies/src/tests.rs new file mode 100644 index 00000000..0da927f6 --- /dev/null +++ b/pallets/roaming/roaming-accounting-policies/src/tests.rs @@ -0,0 +1,84 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policies_count(), 0); + assert!(RoamingAccountingPolicyModule::roaming_accounting_policy(0).is_none()); + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policy_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingAccountingPolicyModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policies_count(), 1); + assert!(RoamingAccountingPolicyModule::roaming_accounting_policy(0).is_some()); + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policy_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!( + RoamingAccountingPolicyModule::create(Origin::signed(1)), + "RoamingAccountingPolicies count overflow" + ); + // Verify Storage + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policies_count(), u64::max_value()); + assert!(RoamingAccountingPolicyModule::roaming_accounting_policy(0).is_none()); + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policy_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingAccountingPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingAccountingPolicyModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policies_count(), 1); + assert!(RoamingAccountingPolicyModule::roaming_accounting_policy(0).is_some()); + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policy_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingAccountingPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingAccountingPolicyModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming accounting_policy" + ); + assert_noop!( + RoamingAccountingPolicyModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming accounting_policy" + ); + // Verify Storage + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policies_count(), 1); + assert!(RoamingAccountingPolicyModule::roaming_accounting_policy(0).is_some()); + assert_eq!(RoamingAccountingPolicyModule::roaming_accounting_policy_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-agreement-policies/Cargo.toml b/pallets/roaming/roaming-agreement-policies/Cargo.toml new file mode 100644 index 00000000..3a671ddc --- /dev/null +++ b/pallets/roaming/roaming-agreement-policies/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = 'roaming-agreement-policies' +version = '1.0.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-networks/std', + 'roaming-accounting-policies/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +# env = { default-features = false, package = 'env', path = '../../env' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-accounting-policies = { default-features = false, package = 'roaming-accounting-policies', path = '../roaming-accounting-policies' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-agreement-policies/src/benchmarking.rs b/pallets/roaming/roaming-agreement-policies/src/benchmarking.rs new file mode 100644 index 00000000..d5bc1b15 --- /dev/null +++ b/pallets/roaming/roaming-agreement-policies/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingAgreementPolicies; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingAgreementPolicies, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-agreement-policies/src/lib.rs b/pallets/roaming/roaming-agreement-policies/src/lib.rs new file mode 100644 index 00000000..c1f8f4a3 --- /dev/null +++ b/pallets/roaming/roaming-agreement-policies/src/lib.rs @@ -0,0 +1,489 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec +#[macro_use] +extern crate alloc; // Required to use Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + roaming_operators::Config + roaming_networks::Config + roaming_accounting_policies::Config +{ + type Event: From> + Into<::Event>; + type RoamingAgreementPolicyIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingAgreementPolicyActivationType: Parameter + Member + Default; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingAgreementPolicy(pub [u8; 16]); + +#[derive(Encode, Debug, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingAgreementPolicySetting { + pub policy_activation_type: U, // "passive" or "handover" + pub policy_expiry_block: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingAgreementPolicyIndex, + ::RoamingAgreementPolicyActivationType, + ::RoamingAccountingPolicyIndex, + ::RoamingNetworkIndex, + ::BlockNumber, + { + /// A roaming agreement_policy is created. (owner, roaming_agreement_policy_id) + Created(AccountId, RoamingAgreementPolicyIndex), + /// A roaming agreement_policy is transferred. (from, to, roaming_agreement_policy_id) + Transferred(AccountId, AccountId, RoamingAgreementPolicyIndex), + /// A roaming agreement_policy configuration + RoamingAgreementPolicySettingSet(AccountId, RoamingAgreementPolicyIndex, RoamingAgreementPolicyActivationType, BlockNumber), + /// A roaming agreement_policy is assigned to a accounting_policy. (owner of network, roaming_agreement_policy_id, roaming_accounting_policy_id) + AssignedAgreementPolicyToAccountingPolicy(AccountId, RoamingAgreementPolicyIndex, RoamingAccountingPolicyIndex), + /// A roaming agreement_policy is assigned to a network. (owner of network, roaming_agreement_policy_id, roaming_network_id) + AssignedAgreementPolicyToNetwork(AccountId, RoamingAgreementPolicyIndex, RoamingNetworkIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingAgreementPolicies { + /// Stores all the roaming agreement_policy, key is the roaming agreement_policy id / index + pub RoamingAgreementPolicies get(fn roaming_agreement_policy): map hasher(opaque_blake2_256) T::RoamingAgreementPolicyIndex => Option; + + /// Stores the total number of roaming agreement_policies. i.e. the next roaming agreement_policy index + pub RoamingAgreementPoliciesCount get(fn roaming_agreement_policies_count): T::RoamingAgreementPolicyIndex; + + /// Get roaming agreement_policy owner + pub RoamingAgreementPolicyOwners get(fn roaming_agreement_policy_owner): map hasher(opaque_blake2_256) T::RoamingAgreementPolicyIndex => Option; + + /// Get roaming agreement_policy config + pub RoamingAgreementPolicySettings get(fn roaming_agreement_policy_settings): map hasher(opaque_blake2_256) T::RoamingAgreementPolicyIndex => Option>; + + /// Get roaming agreement_policy network + pub RoamingAgreementPolicyNetwork get(fn roaming_agreement_policy_network): map hasher(opaque_blake2_256) T::RoamingAgreementPolicyIndex => Option; + + /// Get roaming network's agreement policies + pub RoamingNetworkAgreementPolicies get(fn roaming_network_agreement_policies): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option>; + + /// Get roaming agreement_policy accounting_policy + pub RoamingAgreementPolicyAccountingPolicy get(fn roaming_agreement_policy_accounting_policy): map hasher(opaque_blake2_256) T::RoamingAgreementPolicyIndex => Option; + + /// Get roaming accounting_policy's agreement policies + pub RoamingAccountingPolicyAgreementPolicies get(fn roaming_accounting_policy_agreement_policies): map hasher(opaque_blake2_256) T::RoamingAccountingPolicyIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming agreement_policy + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_agreement_policy_id = Self::next_roaming_agreement_policy_id()?; + + let unique_id = Self::random_value(&sender); + // if env::config::get_env() == "TEST" { + // unique_id = [0; 16]; + // } else { + // Generate a random 128bit value + // unique_id = Self::random_value(&sender); + // } + + // Create and store roaming agreement_policy + let roaming_agreement_policy = RoamingAgreementPolicy(unique_id); + Self::insert_roaming_agreement_policy(&sender, roaming_agreement_policy_id, roaming_agreement_policy); + + Self::deposit_event(RawEvent::Created(sender, roaming_agreement_policy_id)); + } + + /// Transfer a roaming agreement_policy to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_agreement_policy_owner(roaming_agreement_policy_id) == Some(sender.clone()), "Only owner can transfer roaming agreement_policy"); + + Self::update_owner(&to, roaming_agreement_policy_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_agreement_policy_id)); + } + + /// Set roaming agreement_policy config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_config( + origin, + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + _policy_activation_type: Option, // "passive" or "handover" + _policy_expiry_block: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming agreement policy id whose config we want to change actually exists + let is_roaming_agreement_policy = Self::exists_roaming_agreement_policy(roaming_agreement_policy_id).is_ok(); + ensure!(is_roaming_agreement_policy, "RoamingAgreementPolicy does not exist"); + + // Ensure that the caller is owner of the agreement policy config they are trying to change + ensure!(Self::roaming_agreement_policy_owner(roaming_agreement_policy_id) == Some(sender.clone()), "Only owner can set config for roaming agreement_policy"); + + let policy_activation_type = match _policy_activation_type { + Some(value) => value, + None => Default::default() // Default + }; + let policy_expiry_block = match _policy_expiry_block { + Some(value) => value, + None => Default::default() // >::get() // Default + }; + + // Check if a roaming agreement policy config already exists with the given roaming agreement policy id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_agreement_policy_setting_index(roaming_agreement_policy_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_agreement_policy_id, |policy_setting| { + if let Some(_policy_setting) = policy_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _policy_setting.policy_activation_type = policy_activation_type.clone(); + _policy_setting.policy_expiry_block = policy_expiry_block.clone(); + } + }); + info!("Checking mutated values"); + let fetched_policy_setting = >::get(roaming_agreement_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Latest field policy_activation_type {:#?}", _policy_setting.policy_activation_type); + info!("Latest field policy_expiry_block {:#?}", _policy_setting.policy_expiry_block); + } + } else { + info!("Inserting values"); + + // Create a new roaming agreement_policy config instance with the input params + let roaming_agreement_policy_setting_instance = RoamingAgreementPolicySetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + policy_activation_type: policy_activation_type.clone(), + policy_expiry_block: policy_expiry_block.clone() + }; + + >::insert( + roaming_agreement_policy_id, + &roaming_agreement_policy_setting_instance + ); + + info!("Checking inserted values"); + let fetched_policy_setting = >::get(roaming_agreement_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Inserted field policy_activation_type {:#?}", _policy_setting.policy_activation_type); + info!("Inserted field policy_expiry_block {:#?}", _policy_setting.policy_expiry_block); + } + } + + Self::deposit_event(RawEvent::RoamingAgreementPolicySettingSet( + sender, + roaming_agreement_policy_id, + policy_activation_type, + policy_expiry_block + )); + } + + // Optional and only used for organizational purposes to know which networks may want to use it. + // Since we want users to be allowed to create and configure multiple policies and profiles for reuse. + // They will then be associated with any specific networks when the user creates each network (roaming base) profile. + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_agreement_policy_to_network( + origin, + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + // Ensure that caller of the function is the owner of the network id to assign the agreement_policy to + ensure!( + >::is_roaming_network_owner(roaming_network_id, sender.clone()).is_ok(), + "Only the roaming network owner can assign itself a roaming agreement policy" + ); + + Self::associate_agreement_policy_with_network(roaming_agreement_policy_id, roaming_network_id) + .expect("Unable to associate agreement policy with network"); + + // Ensure that the given agreement_policy id already exists + let roaming_agreement_policy = Self::roaming_agreement_policy(roaming_agreement_policy_id); + ensure!(roaming_agreement_policy.is_some(), "Invalid roaming_agreement_policy_id"); + + // Ensure that the agreement_policy is not already owned by a different network + // Unassign the agreement_policy from any existing network since it may only be owned by one network + >::remove(roaming_agreement_policy_id); + + // Assign the agreement_policy owner to the given network (even if already belongs to them) + >::insert(roaming_agreement_policy_id, roaming_network_id); + + Self::deposit_event(RawEvent::AssignedAgreementPolicyToNetwork(sender, roaming_agreement_policy_id, roaming_network_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_agreement_policy_to_accounting_policy( + origin, + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_accounting_policy = > + ::exists_roaming_accounting_policy(roaming_accounting_policy_id).is_ok(); + ensure!(is_roaming_accounting_policy, "RoamingAccountingPolicy does not exist"); + + // Ensure that caller of the function is the owner of the accounting_policy id to assign the agreement_policy to + ensure!( + >::is_roaming_accounting_policy_owner(roaming_accounting_policy_id, sender.clone()).is_ok(), + "Only the roaming accounting_policy owner can assign itself a roaming agreement policy" + ); + + Self::associate_agreement_policy_with_accounting_policy(roaming_agreement_policy_id, roaming_accounting_policy_id) + .expect("Unable to associate agreement policy with accounting_policy"); + + // Ensure that the given agreement_policy id already exists + let roaming_agreement_policy = Self::roaming_agreement_policy(roaming_agreement_policy_id); + ensure!(roaming_agreement_policy.is_some(), "Invalid roaming_agreement_policy_id"); + + // Ensure that the agreement_policy is not already owned by a different accounting_policy + // Unassign the agreement_policy from any existing accounting_policy since it may only be owned by one accounting_policy + >::remove(roaming_agreement_policy_id); + + // Assign the agreement_policy owner to the given accounting_policy (even if already belongs to them) + >::insert(roaming_agreement_policy_id, roaming_accounting_policy_id); + + Self::deposit_event(RawEvent::AssignedAgreementPolicyToAccountingPolicy(sender, roaming_agreement_policy_id, roaming_accounting_policy_id)); + } + } +} + +impl Module { + pub fn is_roaming_agreement_policy_owner( + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_agreement_policy_owner(&roaming_agreement_policy_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of RoamingAgreementPolicy" + ); + Ok(()) + } + + // Note: Not required + // pub fn is_owned_by_required_parent_relationship(roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + // sender: T::AccountId) -> Result<(), DispatchError> { info!("Get the network id associated with the + // network of the given agreement policy id"); let agreement_policy_network_id = + // Self::roaming_agreement_policy_network(roaming_agreement_policy_id); + + // if let Some(_agreement_policy_network_id) = agreement_policy_network_id { + // // Ensure that the caller is owner of the network id associated with the agreement policy + // ensure!((>::is_roaming_network_owner( + // _agreement_policy_network_id.clone(), + // sender.clone() + // )).is_ok(), "Only owner of the network id associated with the given agreement policy can set an + // associated roaming agreement policy config" ); + // } else { + // // There must be a network id associated with the agreement policy + // return Err(DispatchError::Other("RoamingAgreementPolicyNetwork does not exist")); + // } + // Ok(()) + // } + + pub fn exists_roaming_agreement_policy( + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + ) -> Result { + match Self::roaming_agreement_policy(roaming_agreement_policy_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("RoamingAgreementPolicy does not exist")), + } + } + + pub fn exists_roaming_agreement_policy_setting( + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_agreement_policy_settings(roaming_agreement_policy_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("RoamingAgreementPolicySetting does not exist")), + } + } + + pub fn has_value_for_agreement_policy_setting_index( + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + ) -> Result<(), DispatchError> { + info!("Checking if agreement policy config has a value that is defined"); + let fetched_policy_setting = >::get(roaming_agreement_policy_id); + if let Some(_value) = fetched_policy_setting { + info!("Found value for agreement policy config"); + return Ok(()); + } + warn!("No value for agreement policy config"); + Err(DispatchError::Other("No value for agreement policy config")) + } + + /// Only push the agreement policy id onto the end of the vector if it does not already exist + pub fn associate_agreement_policy_with_network( + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network id already exists as a key, + // and where its corresponding value is a vector that already contains the given agreement policy id + if let Some(network_agreement_policies) = Self::roaming_network_agreement_policies(roaming_network_id) { + info!("Network id key {:?} exists with value {:?}", roaming_network_id, network_agreement_policies); + let not_network_contains_agreement_policy = + !network_agreement_policies.contains(&roaming_agreement_policy_id); + ensure!(not_network_contains_agreement_policy, "Network already contains the given agreement policy id"); + info!("Network id key exists but its vector value does not contain the given agreement policy id"); + >::mutate(roaming_network_id, |v| { + if let Some(value) = v { + value.push(roaming_agreement_policy_id); + } + }); + info!( + "Associated agreement policy {:?} with network {:?}", + roaming_agreement_policy_id, + roaming_network_id + ); + Ok(()) + } else { + info!( + "Network id key does not yet exist. Creating the network key {:?} and appending the agreement policy \ + id {:?} to its vector value", + roaming_network_id, + roaming_agreement_policy_id + ); + >::insert(roaming_network_id, &vec![roaming_agreement_policy_id]); + Ok(()) + } + } + + /// Only push the agreement policy id onto the end of the vector if it does not already exist + pub fn associate_agreement_policy_with_accounting_policy( + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + roaming_accounting_policy_id: T::RoamingAccountingPolicyIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given accounting_policy id already exists as a key, + // and where its corresponding value is a vector that already contains the given agreement policy id + if let Some(accounting_policy_agreement_policies) = + Self::roaming_accounting_policy_agreement_policies(roaming_accounting_policy_id) + { + info!( + "AccountingPolicy id key {:?} exists with value {:?}", + roaming_accounting_policy_id, + accounting_policy_agreement_policies + ); + let not_accounting_policy_contains_agreement_policy = + !accounting_policy_agreement_policies.contains(&roaming_agreement_policy_id); + ensure!( + not_accounting_policy_contains_agreement_policy, + "AccountingPolicy already contains the given agreement policy id" + ); + info!( + "AccountingPolicy id key exists but its vector value does not contain the given agreement policy id" + ); + >::mutate(roaming_accounting_policy_id, |v| { + if let Some(value) = v { + value.push(roaming_agreement_policy_id); + } + }); + info!( + "Associated agreement policy {:?} with accounting_policy {:?}", + roaming_agreement_policy_id, + roaming_accounting_policy_id + ); + Ok(()) + } else { + info!( + "AccountingPolicy id key does not yet exist. Creating the accounting_policy key {:?} and appending \ + the agreement policy id {:?} to its vector value", + roaming_accounting_policy_id, + roaming_agreement_policy_id + ); + >::insert( + roaming_accounting_policy_id, + &vec![roaming_agreement_policy_id], + ); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_agreement_policy_id() -> Result { + let roaming_agreement_policy_id = Self::roaming_agreement_policies_count(); + if roaming_agreement_policy_id == ::max_value() { + return Err(DispatchError::Other("RoamingAgreementPolicies count overflow")); + } + Ok(roaming_agreement_policy_id) + } + + fn insert_roaming_agreement_policy( + owner: &T::AccountId, + roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex, + roaming_agreement_policy: RoamingAgreementPolicy, + ) { + // Create and store roaming agreement_policy + >::insert(roaming_agreement_policy_id, roaming_agreement_policy); + >::put(roaming_agreement_policy_id + One::one()); + >::insert(roaming_agreement_policy_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_agreement_policy_id: T::RoamingAgreementPolicyIndex) { + >::insert(roaming_agreement_policy_id, to); + } +} diff --git a/pallets/roaming/roaming-agreement-policies/src/mock.rs b/pallets/roaming/roaming-agreement-policies/src/mock.rs new file mode 100644 index 00000000..a2fb0cc9 --- /dev/null +++ b/pallets/roaming/roaming-agreement-policies/src/mock.rs @@ -0,0 +1,135 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} + +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_accounting_policies::Config for Test { + type Event = (); + type RoamingAccountingPolicyDownlinkFeeFactor = u32; + type RoamingAccountingPolicyIndex = u64; + type RoamingAccountingPolicyType = Vec; + type RoamingAccountingPolicyUplinkFeeFactor = u32; +} +impl Config for Test { + type Event = (); + type RoamingAgreementPolicyActivationType = Vec; + type RoamingAgreementPolicyIndex = u64; +} + +pub type RoamingAgreementPolicyModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-agreement-policies/src/tests.rs b/pallets/roaming/roaming-agreement-policies/src/tests.rs new file mode 100644 index 00000000..810946af --- /dev/null +++ b/pallets/roaming/roaming-agreement-policies/src/tests.rs @@ -0,0 +1,84 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policies_count(), 0); + assert!(RoamingAgreementPolicyModule::roaming_agreement_policy(0).is_none()); + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policy_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingAgreementPolicyModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policies_count(), 1); + assert!(RoamingAgreementPolicyModule::roaming_agreement_policy(0).is_some()); + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policy_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!( + RoamingAgreementPolicyModule::create(Origin::signed(1)), + "RoamingAgreementPolicies count overflow" + ); + // Verify Storage + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policies_count(), u64::max_value()); + assert!(RoamingAgreementPolicyModule::roaming_agreement_policy(0).is_none()); + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policy_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingAgreementPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingAgreementPolicyModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policies_count(), 1); + assert!(RoamingAgreementPolicyModule::roaming_agreement_policy(0).is_some()); + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policy_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingAgreementPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingAgreementPolicyModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming agreement_policy" + ); + assert_noop!( + RoamingAgreementPolicyModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming agreement_policy" + ); + // Verify Storage + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policies_count(), 1); + assert!(RoamingAgreementPolicyModule::roaming_agreement_policy(0).is_some()); + assert_eq!(RoamingAgreementPolicyModule::roaming_agreement_policy_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-billing-policies/Cargo.toml b/pallets/roaming/roaming-billing-policies/Cargo.toml new file mode 100644 index 00000000..656bcf99 --- /dev/null +++ b/pallets/roaming/roaming-billing-policies/Cargo.toml @@ -0,0 +1,52 @@ +[package] +name = 'roaming-billing-policies' +version = '1.0.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-operators/std', + 'roaming-networks/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-billing-policies/src/benchmarking.rs b/pallets/roaming/roaming-billing-policies/src/benchmarking.rs new file mode 100644 index 00000000..95a1342a --- /dev/null +++ b/pallets/roaming/roaming-billing-policies/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingBillingPolicies; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingBillingPolicies, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-billing-policies/src/lib.rs b/pallets/roaming/roaming-billing-policies/src/lib.rs new file mode 100644 index 00000000..6aec3507 --- /dev/null +++ b/pallets/roaming/roaming-billing-policies/src/lib.rs @@ -0,0 +1,464 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec +#[macro_use] +extern crate alloc; // Required to use Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_networks::Config { + type Event: From> + Into<::Event>; + type RoamingBillingPolicyIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingBillingPolicy(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingBillingPolicySetting { + pub policy_next_billing_at_block: U, + pub policy_frequency_in_blocks: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingBillingPolicyIndex, + ::RoamingNetworkIndex, + ::RoamingOperatorIndex, + ::BlockNumber, + { + /// A roaming billing_policy is created. (owner, roaming_billing_policy_id) + Created(AccountId, RoamingBillingPolicyIndex), + /// A roaming billing_policy is transferred. (from, to, roaming_billing_policy_id) + Transferred(AccountId, AccountId, RoamingBillingPolicyIndex), + /// A roaming billing_policy configuration + RoamingBillingPolicySettingSet(AccountId, RoamingBillingPolicyIndex, BlockNumber, BlockNumber), + /// A roaming billing_policy is assigned to a operator. (owner of network, roaming_billing_policy_id, roaming_operator_id) + AssignedBillingPolicyToOperator(AccountId, RoamingBillingPolicyIndex, RoamingOperatorIndex), + /// A roaming billing_policy is assigned to a network. (owner of network, roaming_billing_policy_id, roaming_network_id) + AssignedBillingPolicyToNetwork(AccountId, RoamingBillingPolicyIndex, RoamingNetworkIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingBillingPolicies { + /// Stores all the roaming billing_policy, key is the roaming billing_policy id / index + pub RoamingBillingPolicies get(fn roaming_billing_policy): map hasher(opaque_blake2_256) T::RoamingBillingPolicyIndex => Option; + + /// Stores the total number of roaming billing_policies. i.e. the next roaming billing_policy index + pub RoamingBillingPoliciesCount get(fn roaming_billing_policies_count): T::RoamingBillingPolicyIndex; + + /// Get roaming billing_policy owner + pub RoamingBillingPolicyOwners get(fn roaming_billing_policy_owner): map hasher(opaque_blake2_256) T::RoamingBillingPolicyIndex => Option; + + /// Get roaming billing_policy config + pub RoamingBillingPolicySettings get(fn roaming_billing_policy_settings): map hasher(opaque_blake2_256) T::RoamingBillingPolicyIndex => Option>; + + /// Get roaming billing_policy network + pub RoamingBillingPolicyNetwork get(fn roaming_billing_policy_network): map hasher(opaque_blake2_256) T::RoamingBillingPolicyIndex => Option; + + /// Get roaming network's billing policies + pub RoamingNetworkBillingPolicies get(fn roaming_network_billing_policies): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option>; + + /// Get roaming billing_policy operator + pub RoamingBillingPolicyOperator get(fn roaming_billing_policy_operator): map hasher(opaque_blake2_256) T::RoamingBillingPolicyIndex => Option; + + /// Get roaming operator's billing policies + pub RoamingOperatorBillingPolicies get(fn roaming_operator_billing_policies): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming billing_policy + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_billing_policy_id = Self::next_roaming_billing_policy_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming billing_policy + let roaming_billing_policy = RoamingBillingPolicy(unique_id); + Self::insert_roaming_billing_policy(&sender, roaming_billing_policy_id, roaming_billing_policy); + + Self::deposit_event(RawEvent::Created(sender, roaming_billing_policy_id)); + } + + /// Transfer a roaming billing_policy to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_billing_policy_id: T::RoamingBillingPolicyIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_billing_policy_owner(roaming_billing_policy_id) == Some(sender.clone()), "Only owner can transfer roaming billing_policy"); + + Self::update_owner(&to, roaming_billing_policy_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_billing_policy_id)); + } + + /// Set roaming billing_policy config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_config( + origin, + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + _policy_next_billing_at_block: Option, + _policy_frequency_in_blocks: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming billing policy id whose config we want to change actually exists + let is_roaming_billing_policy = Self::exists_roaming_billing_policy(roaming_billing_policy_id).is_ok(); + ensure!(is_roaming_billing_policy, "RoamingBillingPolicy does not exist"); + + // Ensure that the caller is owner of the billing policy config they are trying to change + ensure!(Self::roaming_billing_policy_owner(roaming_billing_policy_id) == Some(sender.clone()), "Only owner can set config for roaming billing_policy"); + + // let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_billing_policy_id, sender.clone()).is_ok(); + // ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let policy_next_billing_at_block = match _policy_next_billing_at_block { + Some(value) => value, + None => Default::default() // Default + }; + let policy_frequency_in_blocks = match _policy_frequency_in_blocks { + Some(value) => value, + None => Default::default() // >::get() // Default + }; + + // Check if a roaming billing policy config already exists with the given roaming billing policy id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_billing_policy_setting_index(roaming_billing_policy_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_billing_policy_id, |policy_setting| { + if let Some(_policy_setting) = policy_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _policy_setting.policy_next_billing_at_block = policy_next_billing_at_block.clone(); + _policy_setting.policy_frequency_in_blocks = policy_frequency_in_blocks.clone(); + } + }); + info!("Checking mutated values"); + let fetched_policy_setting = >::get(roaming_billing_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Latest field policy_next_billing_at_block {:#?}", _policy_setting.policy_next_billing_at_block); + info!("Latest field policy_frequency_in_blocks {:#?}", _policy_setting.policy_frequency_in_blocks); + } + } else { + info!("Inserting values"); + + // Create a new roaming billing_policy config instance with the input params + let roaming_billing_policy_setting_instance = RoamingBillingPolicySetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + policy_next_billing_at_block: policy_next_billing_at_block.clone(), + policy_frequency_in_blocks: policy_frequency_in_blocks.clone() + }; + + >::insert( + roaming_billing_policy_id, + &roaming_billing_policy_setting_instance + ); + + info!("Checking inserted values"); + let fetched_policy_setting = >::get(roaming_billing_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Inserted field policy_next_billing_at_block {:#?}", _policy_setting.policy_next_billing_at_block); + info!("Inserted field policy_frequency_in_blocks {:#?}", _policy_setting.policy_frequency_in_blocks); + } + } + + Self::deposit_event(RawEvent::RoamingBillingPolicySettingSet( + sender, + roaming_billing_policy_id, + policy_next_billing_at_block, + policy_frequency_in_blocks + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_billing_policy_to_network( + origin, + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + // Ensure that caller of the function is the owner of the network id to assign the billing_policy to + ensure!( + >::is_roaming_network_owner(roaming_network_id, sender.clone()).is_ok(), + "Only the roaming network owner can assign itself a roaming billing policy" + ); + + Self::associate_billing_policy_with_network(roaming_billing_policy_id, roaming_network_id) + .expect("Unable to associate billing policy with network"); + + // Ensure that the given billing_policy id already exists + let roaming_billing_policy = Self::roaming_billing_policy(roaming_billing_policy_id); + ensure!(roaming_billing_policy.is_some(), "Invalid roaming_billing_policy_id"); + + // Ensure that the billing_policy is not already owned by a different network + // Unassign the billing_policy from any existing network since it may only be owned by one network + >::remove(roaming_billing_policy_id); + + // Assign the billing_policy owner to the given network (even if already belongs to them) + >::insert(roaming_billing_policy_id, roaming_network_id); + + Self::deposit_event(RawEvent::AssignedBillingPolicyToNetwork(sender, roaming_billing_policy_id, roaming_network_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_billing_policy_to_operator( + origin, + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + roaming_operator_id: T::RoamingOperatorIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_operator = > + ::exists_roaming_operator(roaming_operator_id).is_ok(); + ensure!(is_roaming_operator, "RoamingOperator does not exist"); + + // Ensure that caller of the function is the owner of the operator id to assign the billing_policy to + ensure!( + >::is_roaming_operator_owner(roaming_operator_id, sender.clone()).is_ok(), + "Only the roaming operator owner can assign itself a roaming billing policy" + ); + + Self::associate_billing_policy_with_operator(roaming_billing_policy_id, roaming_operator_id) + .expect("Unable to associate billing policy with operator"); + + // Ensure that the given billing_policy id already exists + let roaming_billing_policy = Self::roaming_billing_policy(roaming_billing_policy_id); + ensure!(roaming_billing_policy.is_some(), "Invalid roaming_billing_policy_id"); + + // Ensure that the billing_policy is not already owned by a different operator + // Unassign the billing_policy from any existing operator since it may only be owned by one operator + >::remove(roaming_billing_policy_id); + + // Assign the billing_policy owner to the given operator (even if already belongs to them) + >::insert(roaming_billing_policy_id, roaming_operator_id); + + Self::deposit_event(RawEvent::AssignedBillingPolicyToOperator(sender, roaming_billing_policy_id, roaming_operator_id)); + } + } +} + +impl Module { + pub fn is_roaming_billing_policy_owner( + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_billing_policy_owner(&roaming_billing_policy_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of RoamingBillingPolicy" + ); + Ok(()) + } + + // pub fn is_owned_by_required_parent_relationship(roaming_billing_policy_id: T::RoamingBillingPolicyIndex, sender: + // T::AccountId) -> Result<(), DispatchError> { info!("Get the billing policy operator id associated + // with the operator of the given billing policy id"); let billing_policy_operator_id = + // Self::roaming_billing_policy_operator(roaming_billing_policy_id); + + // if let Some(_billing_policy_operator_id) = billing_policy_operator_id { + // // Ensure that the caller is owner of the operator id associated with the billing policy + // ensure!((>::is_roaming_operator_owner( + // _billing_policy_operator_id.clone(), + // sender.clone() + // )).is_ok(), "Only owner of the operator id associated with the given billing policy can set an + // associated roaming billing policy config" ); + // } else { + // // There must be a billing policy operator id associated with the billing policy + // return Err(DispatchError::Other("RoamingBillingPolicyOperator does not exist")); + // } + // Ok(()) + // } + + pub fn exists_roaming_billing_policy( + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + ) -> Result { + match Self::roaming_billing_policy(roaming_billing_policy_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("RoamingBillingPolicy does not exist")), + } + } + + pub fn exists_roaming_billing_policy_setting( + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_billing_policy_settings(roaming_billing_policy_id) { + Some(_) => Ok(()), + None => Err(DispatchError::Other("RoamingBillingPolicySetting does not exist")), + } + } + + pub fn has_value_for_billing_policy_setting_index( + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + ) -> Result<(), DispatchError> { + info!("Checking if billing policy config has a value that is defined"); + let fetched_policy_setting = >::get(roaming_billing_policy_id); + if let Some(_) = fetched_policy_setting { + info!("Found value for billing policy config"); + return Ok(()); + } + warn!("No value for billing policy config"); + Err(DispatchError::Other("No value for billing policy config")) + } + + /// Only push the billing policy id onto the end of the vector if it does not already exist + pub fn associate_billing_policy_with_network( + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network id already exists as a key, + // and where its corresponding value is a vector that already contains the given billing policy id + if let Some(network_billing_policies) = Self::roaming_network_billing_policies(roaming_network_id) { + info!("Network id key {:?} exists with value {:?}", roaming_network_id, network_billing_policies); + let not_network_contains_billing_policy = !network_billing_policies.contains(&roaming_billing_policy_id); + ensure!(not_network_contains_billing_policy, "Network already contains the given billing policy id"); + info!("Network id key exists but its vector value does not contain the given billing policy id"); + >::mutate(roaming_network_id, |v| { + if let Some(value) = v { + value.push(roaming_billing_policy_id); + } + }); + info!( + "Associated billing policy {:?} with network {:?}", + roaming_billing_policy_id, + roaming_network_id + ); + Ok(()) + } else { + info!( + "Network id key does not yet exist. Creating the network key {:?} and appending the billing policy id \ + {:?} to its vector value", + roaming_network_id, + roaming_billing_policy_id + ); + >::insert(roaming_network_id, &vec![roaming_billing_policy_id]); + Ok(()) + } + } + + /// Only push the billing policy id onto the end of the vector if it does not already exist + pub fn associate_billing_policy_with_operator( + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + roaming_operator_id: T::RoamingOperatorIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given operator id already exists as a key, + // and where its corresponding value is a vector that already contains the given billing policy id + if let Some(operator_billing_policies) = Self::roaming_operator_billing_policies(roaming_operator_id) { + info!("Operator id key {:?} exists with value {:?}", roaming_operator_id, operator_billing_policies); + let not_operator_contains_billing_policy = !operator_billing_policies.contains(&roaming_billing_policy_id); + ensure!(not_operator_contains_billing_policy, "Operator already contains the given billing policy id"); + info!("Operator id key exists but its vector value does not contain the given billing policy id"); + >::mutate(roaming_operator_id, |v| { + if let Some(value) = v { + value.push(roaming_billing_policy_id); + } + }); + info!( + "Associated billing policy {:?} with operator {:?}", + roaming_billing_policy_id, + roaming_operator_id + ); + Ok(()) + } else { + info!( + "Operator id key does not yet exist. Creating the operator key {:?} and appending the billing policy \ + id {:?} to its vector value", + roaming_operator_id, + roaming_billing_policy_id + ); + >::insert(roaming_operator_id, &vec![roaming_billing_policy_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_billing_policy_id() -> Result { + let roaming_billing_policy_id = Self::roaming_billing_policies_count(); + if roaming_billing_policy_id == ::max_value() { + return Err(DispatchError::Other("RoamingBillingPolicies count overflow")); + } + Ok(roaming_billing_policy_id) + } + + fn insert_roaming_billing_policy( + owner: &T::AccountId, + roaming_billing_policy_id: T::RoamingBillingPolicyIndex, + roaming_billing_policy: RoamingBillingPolicy, + ) { + // Create and store roaming billing_policy + >::insert(roaming_billing_policy_id, roaming_billing_policy); + >::put(roaming_billing_policy_id + One::one()); + >::insert(roaming_billing_policy_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_billing_policy_id: T::RoamingBillingPolicyIndex) { + >::insert(roaming_billing_policy_id, to); + } +} diff --git a/pallets/roaming/roaming-billing-policies/src/mock.rs b/pallets/roaming/roaming-billing-policies/src/mock.rs new file mode 100644 index 00000000..6255abd4 --- /dev/null +++ b/pallets/roaming/roaming-billing-policies/src/mock.rs @@ -0,0 +1,126 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingBillingPolicyIndex = u64; +} + +pub type RoamingBillingPolicyModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-billing-policies/src/tests.rs b/pallets/roaming/roaming-billing-policies/src/tests.rs new file mode 100644 index 00000000..05cdea88 --- /dev/null +++ b/pallets/roaming/roaming-billing-policies/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policies_count(), 0); + assert!(RoamingBillingPolicyModule::roaming_billing_policy(0).is_none()); + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policy_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingBillingPolicyModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policies_count(), 1); + assert!(RoamingBillingPolicyModule::roaming_billing_policy(0).is_some()); + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policy_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingBillingPolicyModule::create(Origin::signed(1)), "RoamingBillingPolicies count overflow"); + // Verify Storage + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policies_count(), u64::max_value()); + assert!(RoamingBillingPolicyModule::roaming_billing_policy(0).is_none()); + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policy_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingBillingPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingBillingPolicyModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policies_count(), 1); + assert!(RoamingBillingPolicyModule::roaming_billing_policy(0).is_some()); + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policy_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingBillingPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingBillingPolicyModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming billing_policy" + ); + assert_noop!( + RoamingBillingPolicyModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming billing_policy" + ); + // Verify Storage + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policies_count(), 1); + assert!(RoamingBillingPolicyModule::roaming_billing_policy(0).is_some()); + assert_eq!(RoamingBillingPolicyModule::roaming_billing_policy_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-charging-policies/Cargo.toml b/pallets/roaming/roaming-charging-policies/Cargo.toml new file mode 100644 index 00000000..c855c7e3 --- /dev/null +++ b/pallets/roaming/roaming-charging-policies/Cargo.toml @@ -0,0 +1,52 @@ +[package] +name = 'roaming-charging-policies' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-operators/std', + 'roaming-networks/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-charging-policies/src/benchmarking.rs b/pallets/roaming/roaming-charging-policies/src/benchmarking.rs new file mode 100644 index 00000000..fc9a14a9 --- /dev/null +++ b/pallets/roaming/roaming-charging-policies/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingChargingPolicies; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingChargingPolicies, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-charging-policies/src/lib.rs b/pallets/roaming/roaming-charging-policies/src/lib.rs new file mode 100644 index 00000000..16adef93 --- /dev/null +++ b/pallets/roaming/roaming-charging-policies/src/lib.rs @@ -0,0 +1,477 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec +#[macro_use] +extern crate alloc; // Required to use Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_networks::Config { + type Event: From> + Into<::Event>; + type RoamingChargingPolicyIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingChargingPolicy(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingChargingPolicySetting { + pub policy_next_charging_at_block: U, + pub policy_delay_after_billing_in_blocks: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingChargingPolicyIndex, + ::RoamingNetworkIndex, + ::RoamingOperatorIndex, + ::BlockNumber, + { + /// A roaming charging_policy is created. (owner, roaming_charging_policy_id) + Created(AccountId, RoamingChargingPolicyIndex), + /// A roaming charging_policy is transferred. (from, to, roaming_charging_policy_id) + Transferred(AccountId, AccountId, RoamingChargingPolicyIndex), + /// A roaming charging_policy configuration + RoamingChargingPolicySettingSet(AccountId, RoamingChargingPolicyIndex, BlockNumber, BlockNumber), + /// A roaming charging_policy is assigned to a operator. (owner of network, roaming_charging_policy_id, roaming_operator_id) + AssignedChargingPolicyToOperator(AccountId, RoamingChargingPolicyIndex, RoamingOperatorIndex), + /// A roaming charging_policy is assigned to a network. (owner of network, roaming_charging_policy_id, roaming_network_id) + AssignedChargingPolicyToNetwork(AccountId, RoamingChargingPolicyIndex, RoamingNetworkIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingChargingPolicies { + /// Stores all the roaming charging_policy, key is the roaming charging_policy id / index + pub RoamingChargingPolicies get(fn roaming_charging_policy): map hasher(opaque_blake2_256) T::RoamingChargingPolicyIndex => Option; + + /// Stores the total number of roaming charging_policies. i.e. the next roaming charging_policy index + pub RoamingChargingPoliciesCount get(fn roaming_charging_policies_count): T::RoamingChargingPolicyIndex; + + /// Get roaming charging_policy owner + pub RoamingChargingPolicyOwners get(fn roaming_charging_policy_owner): map hasher(opaque_blake2_256) T::RoamingChargingPolicyIndex => Option; + + /// Get roaming charging_policy config + pub RoamingChargingPolicySettings get(fn roaming_charging_policy_settings): map hasher(opaque_blake2_256) T::RoamingChargingPolicyIndex => Option>; + + /// Get roaming charging_policy network + pub RoamingChargingPolicyNetwork get(fn roaming_charging_policy_network): map hasher(opaque_blake2_256) T::RoamingChargingPolicyIndex => Option; + + /// Get roaming network's charging policies + pub RoamingNetworkChargingPolicies get(fn roaming_network_charging_policies): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option>; + + /// Get roaming charging_policy operator + pub RoamingChargingPolicyOperator get(fn roaming_charging_policy_operator): map hasher(opaque_blake2_256) T::RoamingChargingPolicyIndex => Option; + + /// Get roaming operator's charging policies + pub RoamingOperatorChargingPolicies get(fn roaming_operator_charging_policies): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming charging_policy + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_charging_policy_id = Self::next_roaming_charging_policy_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming charging_policy + let roaming_charging_policy = RoamingChargingPolicy(unique_id); + Self::insert_roaming_charging_policy(&sender, roaming_charging_policy_id, roaming_charging_policy); + + Self::deposit_event(RawEvent::Created(sender, roaming_charging_policy_id)); + } + + /// Transfer a roaming charging_policy to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_charging_policy_id: T::RoamingChargingPolicyIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_charging_policy_owner(roaming_charging_policy_id) == Some(sender.clone()), "Only owner can transfer roaming charging_policy"); + + Self::update_owner(&to, roaming_charging_policy_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_charging_policy_id)); + } + + /// Set roaming charging_policy config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_config( + origin, + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + _policy_next_charging_at_block: Option, + _policy_delay_after_billing_in_blocks: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming charging policy id whose config we want to change actually exists + let is_roaming_charging_policy = Self::exists_roaming_charging_policy(roaming_charging_policy_id).is_ok(); + ensure!(is_roaming_charging_policy, "RoamingChargingPolicy does not exist"); + + // Ensure that the caller is owner of the charging policy config they are trying to change + ensure!(Self::roaming_charging_policy_owner(roaming_charging_policy_id) == Some(sender.clone()), "Only owner can set config for roaming charging_policy"); + + // let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_charging_policy_id, sender.clone()).is_ok(); + // ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let policy_next_charging_at_block = match _policy_next_charging_at_block { + Some(value) => value, + None => Default::default() // Default + }; + let policy_delay_after_billing_in_blocks = match _policy_delay_after_billing_in_blocks { + Some(value) => value, + None => Default::default() // >::get() // Default + }; + + // Check if a roaming charging policy config already exists with the given roaming charging policy id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_charging_policy_setting_index(roaming_charging_policy_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_charging_policy_id, |policy_setting| { + if let Some(_policy_setting) = policy_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _policy_setting.policy_next_charging_at_block = policy_next_charging_at_block.clone(); + _policy_setting.policy_delay_after_billing_in_blocks = policy_delay_after_billing_in_blocks.clone(); + } + }); + info!("Checking mutated values"); + let fetched_policy_setting = >::get(roaming_charging_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Latest field policy_next_charging_at_block {:#?}", _policy_setting.policy_next_charging_at_block); + info!("Latest field policy_delay_after_billing_in_blocks {:#?}", _policy_setting.policy_delay_after_billing_in_blocks); + } + } else { + info!("Inserting values"); + + // Create a new roaming charging_policy config instance with the input params + let roaming_charging_policy_setting_instance = RoamingChargingPolicySetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + policy_next_charging_at_block: policy_next_charging_at_block.clone(), + policy_delay_after_billing_in_blocks: policy_delay_after_billing_in_blocks.clone() + }; + + >::insert( + roaming_charging_policy_id, + &roaming_charging_policy_setting_instance + ); + + info!("Checking inserted values"); + let fetched_policy_setting = >::get(roaming_charging_policy_id); + if let Some(_policy_setting) = fetched_policy_setting { + info!("Inserted field policy_next_charging_at_block {:#?}", _policy_setting.policy_next_charging_at_block); + info!("Inserted field policy_delay_after_billing_in_blocks {:#?}", _policy_setting.policy_delay_after_billing_in_blocks); + } + } + + Self::deposit_event(RawEvent::RoamingChargingPolicySettingSet( + sender, + roaming_charging_policy_id, + policy_next_charging_at_block, + policy_delay_after_billing_in_blocks + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_charging_policy_to_network( + origin, + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + // Ensure that caller of the function is the owner of the network id to assign the charging_policy to + ensure!( + >::is_roaming_network_owner(roaming_network_id, sender.clone()).is_ok(), + "Only the roaming network owner can assign itself a roaming charging policy" + ); + + Self::associate_charging_policy_with_network(roaming_charging_policy_id, roaming_network_id) + .expect("Unable to associate charging policy with network"); + + // Ensure that the given charging_policy id already exists + let roaming_charging_policy = Self::roaming_charging_policy(roaming_charging_policy_id); + ensure!(roaming_charging_policy.is_some(), "Invalid roaming_charging_policy_id"); + + // Ensure that the charging_policy is not already owned by a different network + // Unassign the charging_policy from any existing network since it may only be owned by one network + >::remove(roaming_charging_policy_id); + + // Assign the charging_policy owner to the given network (even if already belongs to them) + >::insert(roaming_charging_policy_id, roaming_network_id); + + Self::deposit_event(RawEvent::AssignedChargingPolicyToNetwork(sender, roaming_charging_policy_id, roaming_network_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_charging_policy_to_operator( + origin, + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + roaming_operator_id: T::RoamingOperatorIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_operator = > + ::exists_roaming_operator(roaming_operator_id).is_ok(); + ensure!(is_roaming_operator, "RoamingOperator does not exist"); + + // Ensure that caller of the function is the owner of the operator id to assign the charging_policy to + ensure!( + >::is_roaming_operator_owner(roaming_operator_id, sender.clone()).is_ok(), + "Only the roaming operator owner can assign itself a roaming charging policy" + ); + + Self::associate_charging_policy_with_operator(roaming_charging_policy_id, roaming_operator_id) + .expect("Unable to associate charging policy with operator"); + + // Ensure that the given charging_policy id already exists + let roaming_charging_policy = Self::roaming_charging_policy(roaming_charging_policy_id); + ensure!(roaming_charging_policy.is_some(), "Invalid roaming_charging_policy_id"); + + // Ensure that the charging_policy is not already owned by a different operator + // Unassign the charging_policy from any existing operator since it may only be owned by one operator + >::remove(roaming_charging_policy_id); + + // Assign the charging_policy owner to the given operator (even if already belongs to them) + >::insert(roaming_charging_policy_id, roaming_operator_id); + + Self::deposit_event(RawEvent::AssignedChargingPolicyToOperator(sender, roaming_charging_policy_id, roaming_operator_id)); + } + } +} + +impl Module { + pub fn is_roaming_charging_policy_owner( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_charging_policy_owner(&roaming_charging_policy_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of RoamingChargingPolicy" + ); + Ok(()) + } + + pub fn is_owned_by_required_parent_relationship( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + info!( + "Get the charging policy operator id associated with the operator of the given charging policy id" + ); + let charging_policy_operator_id = Self::roaming_charging_policy_operator(roaming_charging_policy_id); + + if let Some(_charging_policy_operator_id) = charging_policy_operator_id { + // Ensure that the caller is owner of the operator id associated with the charging policy + ensure!( + (>::is_roaming_operator_owner( + _charging_policy_operator_id.clone(), + sender.clone() + )) + .is_ok(), + "Only owner of the operator id associated with the given charging policy can set an associated \ + roaming charging policy config" + ); + } else { + // There must be a charging policy operator id associated with the charging policy + return Err(DispatchError::Other("RoamingChargingPolicyOperator does not exist")); + } + Ok(()) + } + + pub fn exists_roaming_charging_policy( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + ) -> Result { + match Self::roaming_charging_policy(roaming_charging_policy_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("RoamingChargingPolicy does not exist")), + } + } + + pub fn exists_roaming_charging_policy_setting( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_charging_policy_settings(roaming_charging_policy_id) { + Some(_) => Ok(()), + None => Err(DispatchError::Other("RoamingChargingPolicySetting does not exist")), + } + } + + pub fn has_value_for_charging_policy_setting_index( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + ) -> Result<(), DispatchError> { + info!("Checking if charging policy config has a value that is defined"); + let fetched_policy_setting = >::get(roaming_charging_policy_id); + if let Some(_) = fetched_policy_setting { + info!("Found value for charging policy config"); + return Ok(()); + } + warn!("No value for charging policy config"); + Err(DispatchError::Other("No value for charging policy config")) + } + + /// Only push the charging policy id onto the end of the vector if it does not already exist + pub fn associate_charging_policy_with_network( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + roaming_network_id: T::RoamingNetworkIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network id already exists as a key, + // and where its corresponding value is a vector that already contains the given charging policy id + if let Some(network_charging_policies) = Self::roaming_network_charging_policies(roaming_network_id) { + info!("Network id key {:?} exists with value {:?}", roaming_network_id, network_charging_policies); + let not_network_contains_charging_policy = !network_charging_policies.contains(&roaming_charging_policy_id); + ensure!(not_network_contains_charging_policy, "Network already contains the given charging policy id"); + info!("Network id key exists but its vector value does not contain the given charging policy id"); + >::mutate(roaming_network_id, |v| { + if let Some(value) = v { + value.push(roaming_charging_policy_id); + } + }); + info!( + "Associated charging policy {:?} with network {:?}", + roaming_charging_policy_id, + roaming_network_id + ); + Ok(()) + } else { + info!( + "Network id key does not yet exist. Creating the network key {:?} and appending the charging policy \ + id {:?} to its vector value", + roaming_network_id, + roaming_charging_policy_id + ); + >::insert(roaming_network_id, &vec![roaming_charging_policy_id]); + Ok(()) + } + } + + /// Only push the charging policy id onto the end of the vector if it does not already exist + pub fn associate_charging_policy_with_operator( + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + roaming_operator_id: T::RoamingOperatorIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given operator id already exists as a key, + // and where its corresponding value is a vector that already contains the given charging policy id + if let Some(operator_charging_policies) = Self::roaming_operator_charging_policies(roaming_operator_id) { + info!( + "Operator id key {:?} exists with value {:?}", + roaming_operator_id, + operator_charging_policies + ); + let not_operator_contains_charging_policy = + !operator_charging_policies.contains(&roaming_charging_policy_id); + ensure!(not_operator_contains_charging_policy, "Operator already contains the given charging policy id"); + info!("Operator id key exists but its vector value does not contain the given charging policy id"); + >::mutate(roaming_operator_id, |v| { + if let Some(value) = v { + value.push(roaming_charging_policy_id); + } + }); + info!( + "Associated charging policy {:?} with operator {:?}", + roaming_charging_policy_id, + roaming_operator_id + ); + Ok(()) + } else { + info!( + "Operator id key does not yet exist. Creating the operator key {:?} and appending the charging policy \ + id {:?} to its vector value", + roaming_operator_id, + roaming_charging_policy_id + ); + >::insert(roaming_operator_id, &vec![roaming_charging_policy_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_charging_policy_id() -> Result { + let roaming_charging_policy_id = Self::roaming_charging_policies_count(); + if roaming_charging_policy_id == ::max_value() { + return Err(DispatchError::Other("RoamingChargingPolicies count overflow")); + } + Ok(roaming_charging_policy_id) + } + + fn insert_roaming_charging_policy( + owner: &T::AccountId, + roaming_charging_policy_id: T::RoamingChargingPolicyIndex, + roaming_charging_policy: RoamingChargingPolicy, + ) { + // Create and store roaming charging_policy + >::insert(roaming_charging_policy_id, roaming_charging_policy); + >::put(roaming_charging_policy_id + One::one()); + >::insert(roaming_charging_policy_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_charging_policy_id: T::RoamingChargingPolicyIndex) { + >::insert(roaming_charging_policy_id, to); + } +} diff --git a/pallets/roaming/roaming-charging-policies/src/mock.rs b/pallets/roaming/roaming-charging-policies/src/mock.rs new file mode 100644 index 00000000..f2b46b4a --- /dev/null +++ b/pallets/roaming/roaming-charging-policies/src/mock.rs @@ -0,0 +1,126 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingChargingPolicyIndex = u64; +} + +pub type RoamingChargingPolicyModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-charging-policies/src/tests.rs b/pallets/roaming/roaming-charging-policies/src/tests.rs new file mode 100644 index 00000000..6e0a25b9 --- /dev/null +++ b/pallets/roaming/roaming-charging-policies/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policies_count(), 0); + assert!(RoamingChargingPolicyModule::roaming_charging_policy(0).is_none()); + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policy_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingChargingPolicyModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policies_count(), 1); + assert!(RoamingChargingPolicyModule::roaming_charging_policy(0).is_some()); + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policy_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingChargingPolicyModule::create(Origin::signed(1)), "RoamingChargingPolicies count overflow"); + // Verify Storage + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policies_count(), u64::max_value()); + assert!(RoamingChargingPolicyModule::roaming_charging_policy(0).is_none()); + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policy_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingChargingPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingChargingPolicyModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policies_count(), 1); + assert!(RoamingChargingPolicyModule::roaming_charging_policy(0).is_some()); + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policy_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingChargingPolicyModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingChargingPolicyModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming charging_policy" + ); + assert_noop!( + RoamingChargingPolicyModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming charging_policy" + ); + // Verify Storage + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policies_count(), 1); + assert!(RoamingChargingPolicyModule::roaming_charging_policy(0).is_some()); + assert_eq!(RoamingChargingPolicyModule::roaming_charging_policy_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-device-profiles/Cargo.toml b/pallets/roaming/roaming-device-profiles/Cargo.toml new file mode 100644 index 00000000..615a313b --- /dev/null +++ b/pallets/roaming/roaming-device-profiles/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = 'roaming-device-profiles' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-devices/std', + 'roaming-organizations/std', + 'roaming-network-servers/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-devices = { default-features = false, package = 'roaming-devices', path = '../roaming-devices' } +roaming-organizations = { default-features = false, package = 'roaming-organizations', path = '../roaming-organizations' } +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-device-profiles/src/benchmarking.rs b/pallets/roaming/roaming-device-profiles/src/benchmarking.rs new file mode 100644 index 00000000..e2dd1584 --- /dev/null +++ b/pallets/roaming/roaming-device-profiles/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingDeviceProfiles; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingDeviceProfiles, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-device-profiles/src/lib.rs b/pallets/roaming/roaming-device-profiles/src/lib.rs new file mode 100644 index 00000000..09183ee2 --- /dev/null +++ b/pallets/roaming/roaming-device-profiles/src/lib.rs @@ -0,0 +1,404 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_devices::Config { + type Event: From> + Into<::Event>; + type RoamingDeviceProfileIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingDeviceProfileDevAddr: Parameter + Member + Default; + type RoamingDeviceProfileDevEUI: Parameter + Member + Default; + type RoamingDeviceProfileJoinEUI: Parameter + Member + Default; + type RoamingDeviceProfileVendorID: Parameter + Member + Default; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingDeviceProfile(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingDeviceProfileSetting { + pub device_profile_devaddr: U, + pub device_profile_deveui: V, + pub device_profile_joineui: W, + pub device_profile_vendorid: X, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingDeviceProfileIndex, + ::RoamingDeviceProfileDevAddr, + ::RoamingDeviceProfileDevEUI, + ::RoamingDeviceProfileJoinEUI, + ::RoamingDeviceProfileVendorID, + ::RoamingDeviceIndex, + { + /// A roaming device_profile is created. (owner, roaming_device_profile_id) + Created(AccountId, RoamingDeviceProfileIndex), + /// A roaming device_profile is transferred. (from, to, roaming_device_profile_id) + Transferred(AccountId, AccountId, RoamingDeviceProfileIndex), + /// A roaming device_profile configuration + RoamingDeviceProfileSettingSet(AccountId, RoamingDeviceProfileIndex, RoamingDeviceProfileDevAddr, RoamingDeviceProfileDevEUI, RoamingDeviceProfileJoinEUI, RoamingDeviceProfileVendorID), + /// A roaming device_profile is assigned to a device. (owner of device, roaming_device_profile_id, roaming_device_id) + AssignedDeviceProfileToDevice(AccountId, RoamingDeviceProfileIndex, RoamingDeviceIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingDeviceProfiles { + /// Stores all the roaming device_profiles, key is the roaming device_profile id / index + pub RoamingDeviceProfiles get(fn roaming_device_profile): map hasher(opaque_blake2_256) T::RoamingDeviceProfileIndex => Option; + + /// Stores the total number of roaming device_profiles. i.e. the next roaming device_profile index + pub RoamingDeviceProfilesCount get(fn roaming_device_profiles_count): T::RoamingDeviceProfileIndex; + + /// Get roaming device_profile owner + pub RoamingDeviceProfileOwners get(fn roaming_device_profile_owner): map hasher(opaque_blake2_256) T::RoamingDeviceProfileIndex => Option; + + /// Get roaming device_profile config + pub RoamingDeviceProfileSettings get(fn roaming_device_profile_settings): map hasher(opaque_blake2_256) T::RoamingDeviceProfileIndex => Option>; + + /// Get roaming device_profile device + pub RoamingDeviceProfileDevice get(fn roaming_device_profile_device): map hasher(opaque_blake2_256) T::RoamingDeviceProfileIndex => Option; + + /// Get roaming device device_profiles + pub RoamingDeviceDeviceProfiles get(fn roaming_device_device_profiles): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming device_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_device_profile_id = Self::next_roaming_device_profile_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming device_profile + let roaming_device_profile = RoamingDeviceProfile(unique_id); + Self::insert_roaming_device_profile(&sender, roaming_device_profile_id, roaming_device_profile); + + Self::deposit_event(RawEvent::Created(sender, roaming_device_profile_id)); + } + + /// Transfer a roaming device_profile to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_device_profile_id: T::RoamingDeviceProfileIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_device_profile_owner(roaming_device_profile_id) == Some(sender.clone()), "Only owner can transfer roaming device_profile"); + + Self::update_owner(&to, roaming_device_profile_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_device_profile_id)); + } + + /// Set roaming device_profile config + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_config( + origin, + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + _device_profile_devaddr: Option, + _device_profile_deveui: Option, + _device_profile_joineui: Option, + _device_profile_vendorid: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming device profile id whose config we want to change actually exists + let is_roaming_device_profile = Self::exists_roaming_device_profile(roaming_device_profile_id).is_ok(); + ensure!(is_roaming_device_profile, "RoamingDeviceProfile does not exist"); + + // Ensure that the caller is owner of the device profile config they are trying to change + ensure!(Self::roaming_device_profile_owner(roaming_device_profile_id) == Some(sender.clone()), "Only owner can set config for roaming device_profile"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_device_profile_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let device_profile_devaddr = match _device_profile_devaddr { + Some(value) => value, + None => Default::default() // Default + }; + let device_profile_deveui = match _device_profile_deveui { + Some(value) => value, + None => Default::default() + }; + let device_profile_joineui = match _device_profile_joineui { + Some(value) => value, + None => Default::default() + }; + let device_profile_vendorid = match _device_profile_vendorid { + Some(value) => value, + None => Default::default() + }; + + // Check if a roaming device profile config already exists with the given roaming device profile id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_device_profile_setting_index(roaming_device_profile_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_device_profile_id, |profile_setting| { + if let Some(_profile_setting) = profile_setting { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _profile_setting.device_profile_devaddr = device_profile_devaddr.clone(); + _profile_setting.device_profile_deveui = device_profile_deveui.clone(); + _profile_setting.device_profile_joineui = device_profile_joineui.clone(); + _profile_setting.device_profile_vendorid = device_profile_vendorid.clone(); + } + }); + info!("Checking mutated values"); + let fetched_profile_setting = >::get(roaming_device_profile_id); + if let Some(_profile_setting) = fetched_profile_setting { + info!("Latest field device_profile_devaddr {:#?}", _profile_setting.device_profile_devaddr); + info!("Latest field device_profile_deveui {:#?}", _profile_setting.device_profile_deveui); + info!("Latest field device_profile_joineui {:#?}", _profile_setting.device_profile_joineui); + info!("Latest field device_profile_vendorid {:#?}", _profile_setting.device_profile_vendorid); + } + } else { + info!("Inserting values"); + + // Create a new roaming device_profile config instance with the input params + let roaming_device_profile_setting_instance = RoamingDeviceProfileSetting { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + device_profile_devaddr: device_profile_devaddr.clone(), + device_profile_deveui: device_profile_deveui.clone(), + device_profile_joineui: device_profile_joineui.clone(), + device_profile_vendorid: device_profile_vendorid.clone() + }; + + >::insert( + roaming_device_profile_id, + &roaming_device_profile_setting_instance + ); + + info!("Checking inserted values"); + let fetched_profile_setting = >::get(roaming_device_profile_id); + if let Some(_profile_setting) = fetched_profile_setting { + info!("Inserted field device_profile_devaddr {:#?}", _profile_setting.device_profile_devaddr); + info!("Inserted field device_profile_deveui {:#?}", _profile_setting.device_profile_deveui); + info!("Inserted field device_profile_joineui {:#?}", _profile_setting.device_profile_joineui); + info!("Inserted field device_profile_vendorid {:#?}", _profile_setting.device_profile_vendorid); + } + } + + Self::deposit_event(RawEvent::RoamingDeviceProfileSettingSet( + sender, + roaming_device_profile_id, + device_profile_devaddr, + device_profile_deveui, + device_profile_joineui, + device_profile_vendorid + )); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_device_profile_to_device( + origin, + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + roaming_device_id: T::RoamingDeviceIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given device id already exists + let is_roaming_device = > + ::exists_roaming_device(roaming_device_id).is_ok(); + ensure!(is_roaming_device, "RoamingDevice does not exist"); + + // Ensure that caller of the function is the owner of the device id to assign the device_profile to + ensure!( + >::is_roaming_device_owner(roaming_device_id, sender.clone()).is_ok(), + "Only the roaming device owner can assign itself a roaming device_profile" + ); + + Self::associate_device_profile_with_device(roaming_device_profile_id, roaming_device_id) + .expect("Unable to associate device_profile with device"); + + // Ensure that the given device_profile id already exists + let roaming_device_profile = Self::roaming_device_profile(roaming_device_profile_id); + ensure!(roaming_device_profile.is_some(), "Invalid roaming_device_profile_id"); + + // Ensure that the device_profile is not already owned by a different device + // Unassign the device_profile from any existing device since it may only be owned by one device + >::remove(roaming_device_profile_id); + + // Assign the device_profile owner to the given device (even if already belongs to them) + >::insert(roaming_device_profile_id, roaming_device_id); + + Self::deposit_event(RawEvent::AssignedDeviceProfileToDevice(sender, roaming_device_profile_id, roaming_device_id)); + } + } +} + +impl Module { + pub fn exists_roaming_device_profile( + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + ) -> Result { + match Self::roaming_device_profile(roaming_device_profile_id) { + Some(roaming_device_profile) => Ok(roaming_device_profile), + None => Err(DispatchError::Other("RoamingDeviceProfile does not exist")), + } + } + + pub fn is_owned_by_required_parent_relationship( + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + info!("Get the device id associated with the device of the given device profile id"); + let device_profile_device_id = Self::roaming_device_profile_device(roaming_device_profile_id); + + if let Some(_device_profile_device_id) = device_profile_device_id { + // Ensure that the caller is owner of the device id associated with the device profile + ensure!( + (>::is_roaming_device_owner( + _device_profile_device_id.clone(), + sender.clone() + )) + .is_ok(), + "Only owner of the device id associated with the given device profile can set an associated roaming \ + device profile config" + ); + } else { + // There must be a device id associated with the device profile + return Err(DispatchError::Other("RoamingDeviceProfileDevice does not exist")); + } + Ok(()) + } + + pub fn exists_roaming_device_profile_setting( + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_device_profile_settings(roaming_device_profile_id) { + Some(_value) => Ok(()), + None => Err(DispatchError::Other("RoamingDeviceProfileSetting does not exist")), + } + } + + pub fn has_value_for_device_profile_setting_index( + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + ) -> Result<(), DispatchError> { + info!("Checking if device profile config has a value that is defined"); + let fetched_profile_setting = >::get(roaming_device_profile_id); + if let Some(_value) = fetched_profile_setting { + info!("Found value for device profile config"); + return Ok(()); + } + warn!("No value for device profile config"); + Err(DispatchError::Other("No value for device profile config")) + } + + /// Only push the device_profile id onto the end of the vector if it does not already exist + pub fn associate_device_profile_with_device( + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + roaming_device_id: T::RoamingDeviceIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given device id already exists as a key, + // and where its corresponding value is a vector that already contains the given device_profile id + if let Some(device_device_profiles) = Self::roaming_device_device_profiles(roaming_device_id) { + info!("Device id key {:?} exists with value {:?}", roaming_device_id, device_device_profiles); + let not_device_contains_device_profile = !device_device_profiles.contains(&roaming_device_profile_id); + ensure!(not_device_contains_device_profile, "Device already contains the given device_profile id"); + info!("Device id key exists but its vector value does not contain the given device_profile id"); + >::mutate(roaming_device_id, |v| { + if let Some(value) = v { + value.push(roaming_device_profile_id); + } + }); + info!( + "Associated device_profile {:?} with device {:?}", + roaming_device_profile_id, + roaming_device_id + ); + Ok(()) + } else { + info!( + "Device id key does not yet exist. Creating the device key {:?} and appending the device_profile id \ + {:?} to its vector value", + roaming_device_id, + roaming_device_profile_id + ); + >::insert(roaming_device_id, &vec![roaming_device_profile_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_device_profile_id() -> Result { + let roaming_device_profile_id = Self::roaming_device_profiles_count(); + if roaming_device_profile_id == ::max_value() { + return Err(DispatchError::Other("RoamingDeviceProfiles count overflow")); + } + Ok(roaming_device_profile_id) + } + + fn insert_roaming_device_profile( + owner: &T::AccountId, + roaming_device_profile_id: T::RoamingDeviceProfileIndex, + roaming_device_profile: RoamingDeviceProfile, + ) { + // Create and store roaming device_profile + >::insert(roaming_device_profile_id, roaming_device_profile); + >::put(roaming_device_profile_id + One::one()); + >::insert(roaming_device_profile_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_device_profile_id: T::RoamingDeviceProfileIndex) { + >::insert(roaming_device_profile_id, to); + } +} diff --git a/pallets/roaming/roaming-device-profiles/src/mock.rs b/pallets/roaming/roaming-device-profiles/src/mock.rs new file mode 100644 index 00000000..e8b29ad6 --- /dev/null +++ b/pallets/roaming/roaming-device-profiles/src/mock.rs @@ -0,0 +1,142 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_organizations::Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} +impl roaming_devices::Config for Test { + type Event = (); + type RoamingDeviceIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingDeviceProfileDevAddr = Vec; + type RoamingDeviceProfileDevEUI = Vec; + type RoamingDeviceProfileIndex = u64; + type RoamingDeviceProfileJoinEUI = Vec; + type RoamingDeviceProfileVendorID = Vec; +} + +pub type RoamingDeviceProfileModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-device-profiles/src/tests.rs b/pallets/roaming/roaming-device-profiles/src/tests.rs new file mode 100644 index 00000000..d2392f38 --- /dev/null +++ b/pallets/roaming/roaming-device-profiles/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingDeviceProfileModule::roaming_device_profiles_count(), 0); + assert!(RoamingDeviceProfileModule::roaming_device_profile(0).is_none()); + assert_eq!(RoamingDeviceProfileModule::roaming_device_profile_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingDeviceProfileModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingDeviceProfileModule::roaming_device_profiles_count(), 1); + assert!(RoamingDeviceProfileModule::roaming_device_profile(0).is_some()); + assert_eq!(RoamingDeviceProfileModule::roaming_device_profile_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingDeviceProfileModule::create(Origin::signed(1)), "RoamingDeviceProfiles count overflow"); + // Verify Storage + assert_eq!(RoamingDeviceProfileModule::roaming_device_profiles_count(), u64::max_value()); + assert!(RoamingDeviceProfileModule::roaming_device_profile(0).is_none()); + assert_eq!(RoamingDeviceProfileModule::roaming_device_profile_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingDeviceProfileModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingDeviceProfileModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingDeviceProfileModule::roaming_device_profiles_count(), 1); + assert!(RoamingDeviceProfileModule::roaming_device_profile(0).is_some()); + assert_eq!(RoamingDeviceProfileModule::roaming_device_profile_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingDeviceProfileModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingDeviceProfileModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming device_profile" + ); + assert_noop!( + RoamingDeviceProfileModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming device_profile" + ); + // Verify Storage + assert_eq!(RoamingDeviceProfileModule::roaming_device_profiles_count(), 1); + assert!(RoamingDeviceProfileModule::roaming_device_profile(0).is_some()); + assert_eq!(RoamingDeviceProfileModule::roaming_device_profile_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-devices/Cargo.toml b/pallets/roaming/roaming-devices/Cargo.toml new file mode 100644 index 00000000..5b739c51 --- /dev/null +++ b/pallets/roaming/roaming-devices/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = 'roaming-devices' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-operators/std', + 'roaming-networks/std', + 'roaming-network-servers/std', + 'roaming-organizations/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-organizations = { default-features = false, package = 'roaming-organizations', path = '../roaming-organizations' } +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-devices/src/benchmarking.rs b/pallets/roaming/roaming-devices/src/benchmarking.rs new file mode 100644 index 00000000..ffa177ce --- /dev/null +++ b/pallets/roaming/roaming-devices/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingDevices; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingDevices, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-devices/src/lib.rs b/pallets/roaming/roaming-devices/src/lib.rs new file mode 100644 index 00000000..fcdc460c --- /dev/null +++ b/pallets/roaming/roaming-devices/src/lib.rs @@ -0,0 +1,385 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + roaming_operators::Config + roaming_network_servers::Config + roaming_organizations::Config +{ + type Event: From> + Into<::Event>; + type RoamingDeviceIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingDevice(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingDeviceIndex, + ::RoamingNetworkServerIndex, + ::RoamingOrganizationIndex, + Balance = BalanceOf, + { + /// A roaming device is created. (owner, roaming_device_id) + Created(AccountId, RoamingDeviceIndex), + /// A roaming device is transferred. (from, to, roaming_device_id) + Transferred(AccountId, AccountId, RoamingDeviceIndex), + /// A roaming device is available for sale. (owner, roaming_device_id, price) + PriceSet(AccountId, RoamingDeviceIndex, Option), + /// A roaming device is sold. (from, to, roaming_device_id, price) + Sold(AccountId, AccountId, RoamingDeviceIndex, Balance), + /// A roaming device is assigned to a network_server. (owner of network_server, roaming_device_id, roaming_network_server_id) + AssignedDeviceToNetworkServer(AccountId, RoamingDeviceIndex, RoamingNetworkServerIndex), + /// A roaming device is assigned to an organization. (owner of organization, roaming_device_id, roaming_organization_id) + AssignedDeviceToOrganization(AccountId, RoamingDeviceIndex, RoamingOrganizationIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingDevices { + /// Stores all the roaming devices, key is the roaming device id / index + pub RoamingDevices get(fn roaming_device): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option; + + /// Stores the total number of roaming devices. i.e. the next roaming device index + pub RoamingDevicesCount get(fn roaming_devices_count): T::RoamingDeviceIndex; + + /// Get roaming device owner + pub RoamingDeviceOwners get(fn roaming_device_owner): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option; + + /// Get roaming device price. None means not for sale. + pub RoamingDevicePrices get(fn roaming_device_price): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option>; + + /// Get roaming device network_server + pub RoamingDeviceNetworkServers get(fn roaming_device_network_server): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option; + + /// Get roaming device organization + pub RoamingDeviceOrganization get(fn roaming_device_organization): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option; + + /// Get roaming network server's devices + pub RoamingNetworkServerDevices get(fn roaming_network_server_devices): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option>; + + /// Get roaming organization's devices + pub RoamingOrganizationDevices get(fn roaming_organization_devices): map hasher(opaque_blake2_256) T::RoamingOrganizationIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming device + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_device_id = Self::next_roaming_device_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming device + let roaming_device = RoamingDevice(unique_id); + Self::insert_roaming_device(&sender, roaming_device_id, roaming_device); + + Self::deposit_event(RawEvent::Created(sender, roaming_device_id)); + } + + /// Transfer a roaming device to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_device_id: T::RoamingDeviceIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_device_owner(roaming_device_id) == Some(sender.clone()), "Only owner can transfer roaming device"); + + Self::update_owner(&to, roaming_device_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_device_id)); + } + + /// Set a price for a roaming device for sale + /// None to delist the roaming device + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_price(origin, roaming_device_id: T::RoamingDeviceIndex, price: Option>) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_device_owner(roaming_device_id) == Some(sender.clone()), "Only owner can set price for roaming device"); + + if let Some(ref price) = price { + >::insert(roaming_device_id, price); + } else { + >::remove(roaming_device_id); + } + + Self::deposit_event(RawEvent::PriceSet(sender, roaming_device_id, price)); + } + + /// Buy a roaming device with max price willing to pay + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn buy(origin, roaming_device_id: T::RoamingDeviceIndex, price: BalanceOf) { + let sender = ensure_signed(origin)?; + + let owner = Self::roaming_device_owner(roaming_device_id); + ensure!(owner.is_some(), "RoamingDevice owner does not exist"); + let owner = owner.unwrap(); + + let roaming_device_price = Self::roaming_device_price(roaming_device_id); + ensure!(roaming_device_price.is_some(), "RoamingDevice not for sale"); + + let roaming_device_price = roaming_device_price.unwrap(); + ensure!(price >= roaming_device_price, "Price is too low"); + + T::Currency::transfer(&sender, &owner, roaming_device_price, ExistenceRequirement::AllowDeath)?; + + >::remove(roaming_device_id); + + Self::update_owner(&sender, roaming_device_id); + + Self::deposit_event(RawEvent::Sold(owner, sender, roaming_device_id, roaming_device_price)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_device_to_network_server( + origin, + roaming_device_id: T::RoamingDeviceIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network server id already exists + let is_roaming_network_server = > + ::exists_roaming_network_server(roaming_network_server_id).is_ok(); + ensure!(is_roaming_network_server, "RoamingNetworkServer does not exist"); + + // Ensure that caller of the function is the owner of the network server id to assign the device to + ensure!( + >::is_roaming_network_server_owner(roaming_network_server_id, sender.clone()).is_ok(), + "Only the roaming network_server owner can assign itself a roaming device" + ); + + Self::associate_device_with_network_server(roaming_device_id, roaming_network_server_id) + .expect("Unable to associate device with network server"); + + // Ensure that the given device id already exists + let roaming_device = Self::roaming_device(roaming_device_id); + ensure!(roaming_device.is_some(), "Invalid roaming_device_id"); + + // Ensure that the device is not already owned by a different network_server + // Unassign the device from any existing network_server since it may only be owned by one network_server + >::remove(roaming_device_id); + + // Assign the device owner to the given network_server (even if already belongs to them) + >::insert(roaming_device_id, roaming_network_server_id); + + Self::deposit_event(RawEvent::AssignedDeviceToNetworkServer(sender, roaming_device_id, roaming_network_server_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_device_to_organization( + origin, + roaming_device_id: T::RoamingDeviceIndex, + roaming_organization_id: T::RoamingOrganizationIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given organization id already exists + let is_roaming_organization = > + ::exists_roaming_organization(roaming_organization_id).is_ok(); + ensure!(is_roaming_organization, "RoamingOrganization does not exist"); + + // Ensure that caller of the function is the owner of the organization id to assign the device to + ensure!( + >::is_roaming_organization_owner(roaming_organization_id, sender.clone()).is_ok(), + "Only the roaming organization owner can assign itself a roaming device" + ); + + Self::associate_device_with_organization(roaming_device_id, roaming_organization_id) + .expect("Unable to associate device with organization"); + + // Ensure that the given device id already exists + let roaming_device = Self::roaming_device(roaming_device_id); + ensure!(roaming_device.is_some(), "Invalid roaming_device_id"); + + // Ensure that the device is not already owned by a different organization + // Unassign the device from any existing organization since it may only be owned by one organization + >::remove(roaming_device_id); + + // Assign the device owner to the given organization (even if already belongs to them) + >::insert(roaming_device_id, roaming_organization_id); + + Self::deposit_event(RawEvent::AssignedDeviceToOrganization(sender, roaming_device_id, roaming_organization_id)); + } + } +} + +impl Module { + pub fn is_roaming_device_owner( + roaming_device_id: T::RoamingDeviceIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_device_owner(&roaming_device_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of RoamingDevice" + ); + Ok(()) + } + + pub fn exists_roaming_device(roaming_device_id: T::RoamingDeviceIndex) -> Result { + match Self::roaming_device(roaming_device_id) { + Some(roaming_device) => Ok(roaming_device), + None => Err(DispatchError::Other("RoamingDevice does not exist")), + } + } + + /// Only push the device id onto the end of the vector if it does not already exist + pub fn associate_device_with_network_server( + roaming_device_id: T::RoamingDeviceIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network server id already exists as a key, + // and where its corresponding value is a vector that already contains the given device id + if let Some(network_server_devices) = Self::roaming_network_server_devices(roaming_network_server_id) { + info!( + "Network Server id key {:?} exists with value {:?}", + roaming_network_server_id, + network_server_devices + ); + let not_network_server_contains_device = !network_server_devices.contains(&roaming_device_id); + ensure!(not_network_server_contains_device, "Network Server already contains the given device id"); + info!("Network Server id key exists but its vector value does not contain the given device id"); + >::mutate(roaming_network_server_id, |v| { + if let Some(value) = v { + value.push(roaming_device_id); + } + }); + info!( + "Associated device {:?} with network server {:?}", + roaming_device_id, + roaming_network_server_id + ); + Ok(()) + } else { + info!( + "Network Server id key does not yet exist. Creating the network server key {:?} and appending the \ + device id {:?} to its vector value", + roaming_network_server_id, + roaming_device_id + ); + >::insert(roaming_network_server_id, &vec![roaming_device_id]); + Ok(()) + } + } + + /// Only push the device id onto the end of the vector if it does not already exist + pub fn associate_device_with_organization( + roaming_device_id: T::RoamingDeviceIndex, + roaming_organization_id: T::RoamingOrganizationIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network server id already exists as a key, + // and where its corresponding value is a vector that already contains the given device id + if let Some(organization_devices) = Self::roaming_organization_devices(roaming_organization_id) { + info!( + "Organization id key {:?} exists with value {:?}", + roaming_organization_id, + organization_devices + ); + let not_organization_contains_device = !organization_devices.contains(&roaming_device_id); + ensure!(not_organization_contains_device, "Organization already contains the given device id"); + info!("Organization id key exists but its vector value does not contain the given device id"); + >::mutate(roaming_organization_id, |v| { + if let Some(value) = v { + value.push(roaming_device_id); + } + }); + info!("Associated device {:?} with network server {:?}", roaming_device_id, roaming_organization_id); + Ok(()) + } else { + info!( + "Organization id key does not yet exist. Creating the network server key {:?} and appending the \ + device id {:?} to its vector value", + roaming_organization_id, + roaming_device_id + ); + >::insert(roaming_organization_id, &vec![roaming_device_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_device_id() -> Result { + let roaming_device_id = Self::roaming_devices_count(); + if roaming_device_id == ::max_value() { + return Err(DispatchError::Other("RoamingDevices count overflow")); + } + Ok(roaming_device_id) + } + + fn insert_roaming_device( + owner: &T::AccountId, + roaming_device_id: T::RoamingDeviceIndex, + roaming_device: RoamingDevice, + ) { + // Create and store roaming device + >::insert(roaming_device_id, roaming_device); + >::put(roaming_device_id + One::one()); + >::insert(roaming_device_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_device_id: T::RoamingDeviceIndex) { + >::insert(roaming_device_id, to); + } +} diff --git a/pallets/roaming/roaming-devices/src/mock.rs b/pallets/roaming/roaming-devices/src/mock.rs new file mode 100644 index 00000000..1d69684c --- /dev/null +++ b/pallets/roaming/roaming-devices/src/mock.rs @@ -0,0 +1,134 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl roaming_organizations::Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingDeviceIndex = u64; +} + +pub type RoamingDeviceModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-devices/src/tests.rs b/pallets/roaming/roaming-devices/src/tests.rs new file mode 100644 index 00000000..501cfe22 --- /dev/null +++ b/pallets/roaming/roaming-devices/src/tests.rs @@ -0,0 +1,113 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), 0); + assert!(RoamingDeviceModule::roaming_device(0).is_none()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), None); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingDeviceModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), 1); + assert!(RoamingDeviceModule::roaming_device(0).is_some()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), Some(1)); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), None); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingDeviceModule::create(Origin::signed(1)), "RoamingDevices count overflow"); + // Verify Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), u64::max_value()); + assert!(RoamingDeviceModule::roaming_device(0).is_none()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), None); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingDeviceModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingDeviceModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), 1); + assert!(RoamingDeviceModule::roaming_device(0).is_some()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), Some(2)); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), None); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingDeviceModule::create(Origin::signed(1))); + // Call Functions + assert_noop!(RoamingDeviceModule::transfer(Origin::signed(2), 2, 0), "Only owner can transfer roaming device"); + assert_noop!(RoamingDeviceModule::transfer(Origin::signed(1), 2, 1), "Only owner can transfer roaming device"); + // Verify Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), 1); + assert!(RoamingDeviceModule::roaming_device(0).is_some()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), Some(1)); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), None); + }); +} + +#[test] +fn set_price_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingDeviceModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingDeviceModule::set_price(Origin::signed(1), 0, Some(10))); + // Verify Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), 1); + assert!(RoamingDeviceModule::roaming_device(0).is_some()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), Some(1)); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), Some(10)); + }); +} + +#[test] +fn buy_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingDeviceModule::create(Origin::signed(1))); + assert_ok!(RoamingDeviceModule::set_price(Origin::signed(1), 0, Some(10))); + // Call Functions + assert_ok!(RoamingDeviceModule::buy(Origin::signed(2), 0, 10)); + // Verify Storage + assert_eq!(RoamingDeviceModule::roaming_devices_count(), 1); + assert!(RoamingDeviceModule::roaming_device(0).is_some()); + assert_eq!(RoamingDeviceModule::roaming_device_owner(0), Some(2)); + assert_eq!(RoamingDeviceModule::roaming_device_price(0), None); + assert_eq!(Balances::free_balance(1), 20); + assert_eq!(Balances::free_balance(2), 10); + }); +} diff --git a/pallets/roaming/roaming-network-profiles/Cargo.toml b/pallets/roaming/roaming-network-profiles/Cargo.toml new file mode 100644 index 00000000..d3a518f3 --- /dev/null +++ b/pallets/roaming/roaming-network-profiles/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = 'roaming-network-profiles' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-operators/std', + 'roaming-networks/std', + 'roaming-network-servers/std', + 'roaming-organizations/std', + 'roaming-devices/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-devices = { default-features = false, package = 'roaming-devices', path = '../roaming-devices' } +roaming-organizations = { default-features = false, package = 'roaming-organizations', path = '../roaming-organizations' } +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-network-profiles/src/benchmarking.rs b/pallets/roaming/roaming-network-profiles/src/benchmarking.rs new file mode 100644 index 00000000..236c357a --- /dev/null +++ b/pallets/roaming/roaming-network-profiles/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingNetworkProfiles; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingNetworkProfiles, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-network-profiles/src/lib.rs b/pallets/roaming/roaming-network-profiles/src/lib.rs new file mode 100644 index 00000000..4d8a8f52 --- /dev/null +++ b/pallets/roaming/roaming-network-profiles/src/lib.rs @@ -0,0 +1,751 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + roaming_operators::Config + roaming_networks::Config + roaming_devices::Config +{ + type Event: From> + Into<::Event>; + type RoamingNetworkProfileIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingNetworkProfile(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingNetworkProfileIndex, + ::RoamingNetworkIndex, + ::RoamingOperatorIndex, + ::RoamingDeviceIndex, + { + /// A roaming network_profile is created. (owner, roaming_network_profile_id) + Created(AccountId, RoamingNetworkProfileIndex), + /// A roaming network_profile is transferred. (from, to, roaming_network_profile_id) + Transferred(AccountId, AccountId, RoamingNetworkProfileIndex), + /// A roaming network_profile restricted access to any devices + RoamingNetworkProfileDeviceAccessAllowedSet(AccountId, RoamingNetworkProfileIndex, bool), + /// A roaming network_profile whitelisted network for visiting devices was added + AddedRoamingNetworkProfileWhitelistedNetwork(AccountId, RoamingNetworkProfileIndex, RoamingNetworkIndex), + /// A roaming network_profile whitelisted network for visiting devices was removed + RemovedRoamingNetworkProfileWhitelistedNetwork(AccountId, RoamingNetworkProfileIndex, RoamingNetworkIndex), + /// A roaming network_profile blacklisted device for visiting devices was added + AddedRoamingNetworkProfileBlacklistedDevice(AccountId, RoamingNetworkProfileIndex, RoamingDeviceIndex), + /// A roaming network_profile blacklisted device for visiting devices was removed + RemovedRoamingNetworkProfileBlacklistedDevice(AccountId, RoamingNetworkProfileIndex, RoamingDeviceIndex), + /// A roaming network_profile is assigned to a network. (owner of network, roaming_network_profile_id, roaming_network_id) + AssignedNetworkProfileToNetwork(AccountId, RoamingNetworkProfileIndex, RoamingNetworkIndex), + /// A roaming network_profile is assigned to an operator. (owner of network, roaming_network_profile_id, roaming_operator_id) + AssignedNetworkProfileToOperator(AccountId, RoamingNetworkProfileIndex, RoamingOperatorIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingNetworkProfiles { + /// Stores all the roaming network_profiles, key is the roaming network_profile id / index + pub RoamingNetworkProfiles get(fn roaming_network_profile): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option; + + /// Stores the total number of roaming network_profiles. i.e. the next roaming network_profile index + pub RoamingNetworkProfilesCount get(fn roaming_network_profiles_count): T::RoamingNetworkProfileIndex; + + /// Get roaming network_profile owner + pub RoamingNetworkProfileOwners get(fn roaming_network_profile_owner): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option; + + /// Get roaming network_policy status of whether any device visitors are allowed to roam at all + pub RoamingNetworkProfileDeviceAccessAllowed get(fn roaming_network_profile_restricted_access): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option; + + /// Get roaming network_policy whitelisted networks of visiting devices + pub RoamingNetworkProfileWhitelistedNetworks get(fn roaming_network_profile_whitelisted_networks): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option>; + + /// Get roaming network_policy blacklisted devices of that are visiting + pub RoamingNetworkProfileBlacklistedDevices get(fn roaming_network_profile_blacklisted_devices): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option>; + + /// Get roaming network_profile network + pub RoamingNetworkProfileNetwork get(fn roaming_network_profile_network): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option; + + /// Get roaming network_profile operators + pub RoamingNetworkProfileOperator get(fn roaming_network_profile_operators): map hasher(opaque_blake2_256) T::RoamingNetworkProfileIndex => Option; + + /// Get roaming network's network profiles + pub RoamingNetworkNetworkProfiles get(fn roaming_network_network_profiles): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option>; + + /// Get roaming operator's network profiles + pub RoamingOperatorNetworkProfiles get(fn roaming_operator_network_profiles): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming network_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_network_profile_id = Self::next_roaming_network_profile_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming network_profile + let roaming_network_profile = RoamingNetworkProfile(unique_id); + Self::insert_roaming_network_profile(&sender, roaming_network_profile_id, roaming_network_profile); + + Self::deposit_event(RawEvent::Created(sender, roaming_network_profile_id)); + } + + /// Transfer a roaming network_profile to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_network_profile_id: T::RoamingNetworkProfileIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_network_profile_owner(roaming_network_profile_id) == Some(sender.clone()), "Only owner can transfer roaming network_profile"); + + Self::update_owner(&to, roaming_network_profile_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_network_profile_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_device_access_allowed(origin, roaming_network_profile_id: T::RoamingNetworkProfileIndex, device_access_allowed: bool) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming network_profile id actually exists + let is_roaming_network_profile = Self::exists_roaming_network_profile(roaming_network_profile_id).is_ok(); + ensure!(is_roaming_network_profile, "RoamingNetworkProfile does not exist"); + + // Ensure that the caller is owner of the network_profile whitelisted network they are trying to change + ensure!(Self::roaming_network_profile_owner(roaming_network_profile_id) == Some(sender.clone()), "Only owner can set whitelisted network for roaming network_profile"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_network_profile_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + >::insert( + roaming_network_profile_id, + &device_access_allowed + ); + + Self::deposit_event(RawEvent::RoamingNetworkProfileDeviceAccessAllowedSet(sender, roaming_network_profile_id, device_access_allowed)); + } + + /// Add roaming network_profile whitelisted network + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn add_whitelisted_network( + origin, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_network_id: T::RoamingNetworkIndex + ) -> Result<(), DispatchError> { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming network_profile id whose config we want to change actually exists + let is_roaming_network_profile = Self::exists_roaming_network_profile(roaming_network_profile_id).is_ok(); + ensure!(is_roaming_network_profile, "RoamingNetworkProfile does not exist"); + + // Ensure that the caller is owner of the network_profile whitelisted network they are trying to change + ensure!(Self::roaming_network_profile_owner(roaming_network_profile_id) == Some(sender.clone()), "Only owner can set whitelisted network for roaming network_profile"); + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_network_profile_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let mut fetched_whitelisted_networks; + + // Check roaming network_profile whitelisted network vector already exists with the given roaming network_profile id + // to determine whether to insert new or mutate existing. + info!("Checking if vector of whitelisted networks is defined"); + if Self::has_value_for_network_profile_whitelisted_networks(roaming_network_profile_id).is_ok() { + info!("Checking if whitelisted network id already exists to mutate its value in the vector"); + + info!("Getting vector of whitelisted networks"); + fetched_whitelisted_networks = >::get(roaming_network_profile_id); + + if let Some(whitelisted_networks) = fetched_whitelisted_networks { + info!("Search for element in vector of whitelisted networks that matches the network_id provided"); + if whitelisted_networks.contains(&roaming_network_id) { + info!("Provided network_id is already a whitelisted network"); + return Err(DispatchError::Other("Provided network_id is already a whitelisted network")); + } + + // If it doesn't exist, but we still already have a vector with other whitelisted networks + // then we'll append the new whitelisted network to the end of the vector + let next_index = whitelisted_networks.len() - 1; + info!("Updating whitelisted networks by appending a new whitelisted network at next_index {:?}: ", next_index); + + >::mutate(roaming_network_profile_id, |v| { + if let Some(value) = v { + value.push(roaming_network_id); + } + }); + + info!("Appended whitelisted network"); + + info!("Checking inserted values"); + fetched_whitelisted_networks = >::get(roaming_network_profile_id); + + if let Some(_whitelisted_networks) = fetched_whitelisted_networks { + info!("Inserted field roaming_network_id {:#?}", _whitelisted_networks); + } + } + } else { + info!("Inserting new vector with the whitelisted network provided since no vector value is defined"); + + let mut new_whitelisted_networks = Vec::new(); + new_whitelisted_networks.push(roaming_network_id); + + >::insert( + roaming_network_profile_id, + &new_whitelisted_networks + ); + + info!("Checking inserted values"); + fetched_whitelisted_networks = >::get(roaming_network_profile_id); + + if let Some(_whitelisted_networks) = fetched_whitelisted_networks { + // Get the whitelisted network at the 0 index that was inserted + if let Some (_whitelisted_network) = _whitelisted_networks.get(0) { + info!("Inserted field roaming_network_id {:#?}", _whitelisted_network); + } + } + } + + Self::deposit_event(RawEvent::AddedRoamingNetworkProfileWhitelistedNetwork( + sender, + roaming_network_profile_id, + roaming_network_id + )); + + Ok(()) + } + + /// Add roaming network_profile whitelisted network + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn remove_whitelisted_network( + origin, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_network_id: T::RoamingNetworkIndex + ) -> Result<(), DispatchError> { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming network_profile id whose config we want to change actually exists + let is_roaming_network_profile = Self::exists_roaming_network_profile(roaming_network_profile_id).is_ok(); + ensure!(is_roaming_network_profile, "RoamingNetworkProfile does not exist"); + + // Ensure that the caller is owner of the network_profile whitelisted network they are trying to change + ensure!(Self::roaming_network_profile_owner(roaming_network_profile_id) == Some(sender.clone()), "Only owner can set whitelisted network for roaming network_profile"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_network_profile_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let mut fetched_whitelisted_networks; + + // Check roaming network_profile whitelisted network vector already exists with the given roaming network_profile id + // to determine whether to insert new or mutate existing. + info!("Checking if vector of whitelisted networks is defined"); + if Self::has_value_for_network_profile_whitelisted_networks(roaming_network_profile_id).is_ok() { + info!("Checking if whitelisted network id already exists to mutate its value in the vector"); + + info!("Getting vector of whitelisted networks"); + fetched_whitelisted_networks = >::get(roaming_network_profile_id); + + if let Some(whitelisted_networks) = fetched_whitelisted_networks { + let mut found_index; + + info!("Search for element in vector of whitelisted networks that matches the network_id provided"); + for (index, whitelisted_network) in whitelisted_networks.iter().enumerate() { + if whitelisted_network == &roaming_network_id { + found_index = index; + + info!("Provided network_id is already a whitelisted network at index {:?}", found_index); + info!("Removing whitelisted network at index {:?}: ", found_index); + + >::mutate(roaming_network_profile_id, |v| { + if let Some(value) = v { + // https://doc.rust-lang.org/std/vec/struct.Vec.html#method.remove + value.remove(found_index); + } + }); + + info!("Removed whitelisted network"); + + info!("Checking inserted values"); + fetched_whitelisted_networks = >::get(roaming_network_profile_id); + + if let Some(_whitelisted_networks) = fetched_whitelisted_networks { + info!("Removed field roaming_network_id {:#?}", _whitelisted_networks); + } + } + } + } + } + + Self::deposit_event(RawEvent::RemovedRoamingNetworkProfileWhitelistedNetwork( + sender, + roaming_network_profile_id, + roaming_network_id + )); + + Ok(()) + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn add_blacklisted_device( + origin, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_device_id: T::RoamingDeviceIndex + ) -> Result<(), DispatchError> { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming network_profile id whose config we want to change actually exists + let is_roaming_network_profile = Self::exists_roaming_network_profile(roaming_network_profile_id).is_ok(); + ensure!(is_roaming_network_profile, "RoamingNetworkProfile does not exist"); + + // Ensure that the caller is owner of the network_profile blacklisted device they are trying to change + ensure!(Self::roaming_network_profile_owner(roaming_network_profile_id) == Some(sender.clone()), "Only owner can set blacklisted device for roaming network_profile"); + + // Ensure that the given network id already exists + let is_roaming_device = > + ::exists_roaming_device(roaming_device_id).is_ok(); + ensure!(is_roaming_device, "RoamingDevice does not exist"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_network_profile_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let mut fetched_blacklisted_devices; + + // Check roaming network_profile blacklisted device vector already exists with the given roaming network_profile id + // to determine whether to insert new or mutate existing. + info!("Checking if vector of blacklisted devices is defined"); + if Self::has_value_for_network_profile_blacklisted_devices(roaming_network_profile_id).is_ok() { + info!("Checking if blacklisted device id already exists to mutate its value in the vector"); + + info!("Getting vector of blacklisted devices"); + fetched_blacklisted_devices = >::get(roaming_network_profile_id); + + if let Some(blacklisted_devices) = fetched_blacklisted_devices { + info!("Search for element in vector of blacklisted devices that matches the network_id provided"); + if blacklisted_devices.contains(&roaming_device_id) { + info!("Provided network_id is already a blacklisted device"); + return Err(DispatchError::Other("Provided network_id is already a blacklisted device")); + } + + // If it doesn't exist, but we still already have a vector with other blacklisted devices + // then we'll append the new blacklisted device to the end of the vector + let next_index = blacklisted_devices.len() - 1; + info!("Updating blacklisted devices by appending a new blacklisted device at next_index {:?}: ", next_index); + + >::mutate(roaming_network_profile_id, |v| { + if let Some(value) = v { + value.push(roaming_device_id); + } + }); + + info!("Appended blacklisted device"); + + info!("Checking inserted values"); + fetched_blacklisted_devices = >::get(roaming_network_profile_id); + + if let Some(_blacklisted_devices) = fetched_blacklisted_devices { + info!("Inserted field roaming_device_id {:#?}", _blacklisted_devices); + } + } + } else { + info!("Inserting new vector with the blacklisted device provided since no vector value is defined"); + + let mut new_blacklisted_devices = Vec::new(); + new_blacklisted_devices.push(roaming_device_id); + + >::insert( + roaming_network_profile_id, + &new_blacklisted_devices + ); + + info!("Checking inserted values"); + fetched_blacklisted_devices = >::get(roaming_network_profile_id); + + if let Some(_blacklisted_devices) = fetched_blacklisted_devices { + // Get the blacklisted device at the 0 index that was inserted + if let Some (_blacklisted_device) = _blacklisted_devices.get(0) { + info!("Inserted field roaming_device_id {:#?}", _blacklisted_device); + } + } + } + + Self::deposit_event(RawEvent::AddedRoamingNetworkProfileBlacklistedDevice( + sender, + roaming_network_profile_id, + roaming_device_id + )); + + Ok(()) + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn remove_blacklisted_device( + origin, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_device_id: T::RoamingDeviceIndex + ) -> Result<(), DispatchError> { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming network_profile id whose config we want to change actually exists + let is_roaming_network_profile = Self::exists_roaming_network_profile(roaming_network_profile_id).is_ok(); + ensure!(is_roaming_network_profile, "RoamingNetworkProfile does not exist"); + + // Ensure that the caller is owner of the network_profile blacklisted device they are trying to change + ensure!(Self::roaming_network_profile_owner(roaming_network_profile_id) == Some(sender.clone()), "Only owner can set blacklisted device for roaming network_profile"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_network_profile_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let mut fetched_blacklisted_devices; + + // Check roaming network_profile blacklisted device vector already exists with the given roaming network_profile id + // to determine whether to insert new or mutate existing. + info!("Checking if vector of blacklisted devices is defined"); + if Self::has_value_for_network_profile_blacklisted_devices(roaming_network_profile_id).is_ok() { + info!("Checking if blacklisted device id already exists to mutate its value in the vector"); + + info!("Getting vector of blacklisted devices"); + fetched_blacklisted_devices = >::get(roaming_network_profile_id); + + if let Some(blacklisted_devices) = fetched_blacklisted_devices { + let mut found_index; + + info!("Search for element in vector of blacklisted devices that matches the network_id provided"); + for (index, blacklisted_device) in blacklisted_devices.iter().enumerate() { + if blacklisted_device == &roaming_device_id { + found_index = index; + + info!("Provided network_id is already a blacklisted device at index {:?}", found_index); + info!("Removing blacklisted device at index {:?}: ", found_index); + + >::mutate(roaming_network_profile_id, |v| { + if let Some(value) = v { + // https://doc.rust-lang.org/std/vec/struct.Vec.html#method.remove + value.remove(found_index); + } + }); + + info!("Removed blacklisted device"); + + info!("Checking inserted values"); + fetched_blacklisted_devices = >::get(roaming_network_profile_id); + + if let Some(_blacklisted_devices) = fetched_blacklisted_devices { + info!("Removed field roaming_device_id {:#?}", _blacklisted_devices); + } + } + } + } + } + + Self::deposit_event(RawEvent::RemovedRoamingNetworkProfileBlacklistedDevice( + sender, + roaming_network_profile_id, + roaming_device_id + )); + + Ok(()) + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_network_profile_to_network( + origin, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_network_id: T::RoamingNetworkIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + // Ensure that caller of the function is the owner of the network id to assign the network_profile to + ensure!( + >::is_roaming_network_owner(roaming_network_id, sender.clone()).is_ok(), + "Only the roaming network owner can assign itself a roaming network profile" + ); + + Self::associate_network_profile_with_network(roaming_network_profile_id, roaming_network_id) + .expect("Unable to associate network profile with network"); + + // Ensure that the given network_profile id already exists + let roaming_network_profile = Self::roaming_network_profile(roaming_network_profile_id); + ensure!(roaming_network_profile.is_some(), "Invalid roaming_network_profile_id"); + + // Ensure that the network_profile is not already owned by a different network + // Unassign the network_profile from any existing network since it may only be owned by one network + >::remove(roaming_network_profile_id); + + // Assign the network_profile owner to the given network (even if already belongs to them) + >::insert(roaming_network_profile_id, roaming_network_id); + + Self::deposit_event(RawEvent::AssignedNetworkProfileToNetwork(sender, roaming_network_profile_id, roaming_network_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_network_profile_to_operator( + origin, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_operator_id: T::RoamingOperatorIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given operator id already exists + let is_roaming_operator = > + ::exists_roaming_operator(roaming_operator_id).is_ok(); + ensure!(is_roaming_operator, "RoamingOperator does not exist"); + + // Ensure that caller of the function is the owner of the operator id to assign the network to + ensure!( + >::is_roaming_operator_owner(roaming_operator_id, sender.clone()).is_ok(), + "Only the roaming operator owner can assign itself a roaming network profile" + ); + + Self::associate_network_profile_with_operator(roaming_network_profile_id, roaming_operator_id) + .expect("Unable to associate network profile with operator"); + + // Ensure that the given network_profile id already exists + let roaming_network_profile = Self::roaming_network_profile(roaming_network_profile_id); + ensure!(roaming_network_profile.is_some(), "Invalid roaming_network_profile_id"); + + // Ensure that the network_profile is not already owned by a different operator + // Unassign the network_profile from any existing operator since it may only be owned by one operator + >::remove(roaming_network_profile_id); + + // Assign the network_profile owner to the given operator (even if already belongs to them) + >::insert(roaming_network_profile_id, roaming_operator_id); + + Self::deposit_event(RawEvent::AssignedNetworkProfileToOperator(sender, roaming_network_profile_id, roaming_operator_id)); + } + } +} + +impl Module { + pub fn is_roaming_network_profile_owner( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_network_profile_owner(&roaming_network_profile_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of RoamingNetworkProfile" + ); + Ok(()) + } + + pub fn is_owned_by_required_parent_relationship( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + info!("Get the network id associated with the network of the given network profile id"); + let network_profile_network_id = Self::roaming_network_profile_network(roaming_network_profile_id); + + if let Some(_network_profile_network_id) = network_profile_network_id { + // Ensure that the caller is owner of the network id associated with the network profile + ensure!( + (>::is_roaming_network_owner( + _network_profile_network_id.clone(), + sender.clone() + )) + .is_ok(), + "Only owner of the network id associated with the given network profile can set an associated roaming \ + network profile config" + ); + } else { + // There must be a network id associated with the network profile + return Err(DispatchError::Other("RoamingNetworkProfileNetwork does not exist")); + } + Ok(()) + } + + pub fn exists_roaming_network_profile( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + ) -> Result { + match Self::roaming_network_profile(roaming_network_profile_id) { + Some(roaming_network_profile) => Ok(roaming_network_profile), + None => Err(DispatchError::Other("RoamingNetworkProfile does not exist")), + } + } + + pub fn has_value_for_network_profile_whitelisted_networks( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + ) -> Result<(), DispatchError> { + info!("Checking if network_profile whitelisted network has a value that is defined"); + let fetched_network_profile_whitelisted_network = + >::get(roaming_network_profile_id); + if let Some(_value) = fetched_network_profile_whitelisted_network { + info!("Found value for network_profile whitelisted network"); + return Ok(()); + } + warn!("No value for network_profile whitelisted network"); + Err(DispatchError::Other("No value for network_profile whitelisted network")) + } + + pub fn has_value_for_network_profile_blacklisted_devices( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + ) -> Result<(), DispatchError> { + info!("Checking if network_profile blacklisted_devices has a value that is defined"); + let fetched_network_profile_blacklisted_devices = + >::get(roaming_network_profile_id); + if let Some(_value) = fetched_network_profile_blacklisted_devices { + info!("Found value for network_profile blacklisted_devices"); + return Ok(()); + } + warn!("No value for network_profile blacklisted_devices"); + Err(DispatchError::Other("No value for network_profile blacklisted_devices")) + } + + /// Only push the network profile id onto the end of the vector if it does not already exist + pub fn associate_network_profile_with_network( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_network_id: T::RoamingNetworkIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network id already exists as a key, + // and where its corresponding value is a vector that already contains the given network profile id + if let Some(network_network_profiles) = Self::roaming_network_network_profiles(roaming_network_id) { + info!("Network id key {:?} exists with value {:?}", roaming_network_id, network_network_profiles); + let not_network_contains_network_profile = !network_network_profiles.contains(&roaming_network_profile_id); + ensure!(not_network_contains_network_profile, "Network already contains the given network profile id"); + info!("Network id key exists but its vector value does not contain the given network profile id"); + >::mutate(roaming_network_id, |v| { + if let Some(value) = v { + value.push(roaming_network_profile_id); + } + }); + info!( + "Associated network profile {:?} with network {:?}", + roaming_network_profile_id, + roaming_network_id + ); + Ok(()) + } else { + info!( + "Network id key does not yet exist. Creating the network key {:?} and appending the network profile \ + id {:?} to its vector value", + roaming_network_id, + roaming_network_profile_id + ); + >::insert(roaming_network_id, &vec![roaming_network_profile_id]); + Ok(()) + } + } + + /// Only push the network profile id onto the end of the vector if it does not already exist + pub fn associate_network_profile_with_operator( + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_operator_id: T::RoamingOperatorIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given operator id already exists as a key, + // and where its corresponding value is a vector that already contains the given network profile id + if let Some(operator_network_profiles) = Self::roaming_operator_network_profiles(roaming_operator_id) { + info!("Operator id key {:?} exists with value {:?}", roaming_operator_id, operator_network_profiles); + let not_operator_contains_network_profile = + !operator_network_profiles.contains(&roaming_network_profile_id); + ensure!(not_operator_contains_network_profile, "Operator already contains the given network profile id"); + info!("Operator id key exists but its vector value does not contain the given network profile id"); + >::mutate(roaming_operator_id, |v| { + if let Some(value) = v { + value.push(roaming_network_profile_id); + } + }); + info!( + "Associated network profile {:?} with operator {:?}", + roaming_network_profile_id, + roaming_operator_id + ); + Ok(()) + } else { + info!( + "Operator id key does not yet exist. Creating the operator key {:?} and appending the network profile \ + id {:?} to its vector value", + roaming_operator_id, + roaming_network_profile_id + ); + >::insert(roaming_operator_id, &vec![roaming_network_profile_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_network_profile_id() -> Result { + let roaming_network_profile_id = Self::roaming_network_profiles_count(); + if roaming_network_profile_id == ::max_value() { + return Err(DispatchError::Other("RoamingNetworkProfiles count overflow")); + } + Ok(roaming_network_profile_id) + } + + fn insert_roaming_network_profile( + owner: &T::AccountId, + roaming_network_profile_id: T::RoamingNetworkProfileIndex, + roaming_network_profile: RoamingNetworkProfile, + ) { + // Create and store roaming network_profile + >::insert(roaming_network_profile_id, roaming_network_profile); + >::put(roaming_network_profile_id + One::one()); + >::insert(roaming_network_profile_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_network_profile_id: T::RoamingNetworkProfileIndex) { + >::insert(roaming_network_profile_id, to); + } +} diff --git a/pallets/roaming/roaming-network-profiles/src/mock.rs b/pallets/roaming/roaming-network-profiles/src/mock.rs new file mode 100644 index 00000000..f6899243 --- /dev/null +++ b/pallets/roaming/roaming-network-profiles/src/mock.rs @@ -0,0 +1,138 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl roaming_devices::Config for Test { + type Event = (); + type RoamingDeviceIndex = u64; +} +impl roaming_organizations::Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingNetworkProfileIndex = u64; +} + +pub type RoamingNetworkProfileModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-network-profiles/src/tests.rs b/pallets/roaming/roaming-network-profiles/src/tests.rs new file mode 100644 index 00000000..ef1534ba --- /dev/null +++ b/pallets/roaming/roaming-network-profiles/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingNetworkProfileModule::roaming_network_profiles_count(), 0); + assert!(RoamingNetworkProfileModule::roaming_network_profile(0).is_none()); + assert_eq!(RoamingNetworkProfileModule::roaming_network_profile_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingNetworkProfileModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingNetworkProfileModule::roaming_network_profiles_count(), 1); + assert!(RoamingNetworkProfileModule::roaming_network_profile(0).is_some()); + assert_eq!(RoamingNetworkProfileModule::roaming_network_profile_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingNetworkProfileModule::create(Origin::signed(1)), "RoamingNetworkProfiles count overflow"); + // Verify Storage + assert_eq!(RoamingNetworkProfileModule::roaming_network_profiles_count(), u64::max_value()); + assert!(RoamingNetworkProfileModule::roaming_network_profile(0).is_none()); + assert_eq!(RoamingNetworkProfileModule::roaming_network_profile_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkProfileModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingNetworkProfileModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingNetworkProfileModule::roaming_network_profiles_count(), 1); + assert!(RoamingNetworkProfileModule::roaming_network_profile(0).is_some()); + assert_eq!(RoamingNetworkProfileModule::roaming_network_profile_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkProfileModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingNetworkProfileModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming network_profile" + ); + assert_noop!( + RoamingNetworkProfileModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming network_profile" + ); + // Verify Storage + assert_eq!(RoamingNetworkProfileModule::roaming_network_profiles_count(), 1); + assert!(RoamingNetworkProfileModule::roaming_network_profile(0).is_some()); + assert_eq!(RoamingNetworkProfileModule::roaming_network_profile_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-network-servers/Cargo.toml b/pallets/roaming/roaming-network-servers/Cargo.toml new file mode 100644 index 00000000..fb316279 --- /dev/null +++ b/pallets/roaming/roaming-network-servers/Cargo.toml @@ -0,0 +1,52 @@ +[package] +name = 'roaming-network-servers' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-network-servers/src/benchmarking.rs b/pallets/roaming/roaming-network-servers/src/benchmarking.rs new file mode 100644 index 00000000..86aecc8b --- /dev/null +++ b/pallets/roaming/roaming-network-servers/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingNetworkServers; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingNetworkServers, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-network-servers/src/lib.rs b/pallets/roaming/roaming-network-servers/src/lib.rs new file mode 100644 index 00000000..11d828da --- /dev/null +++ b/pallets/roaming/roaming-network-servers/src/lib.rs @@ -0,0 +1,383 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_networks::Config { + type Event: From> + Into<::Event>; + type RoamingNetworkServerIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingNetworkServer(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingNetworkServerIndex, + ::RoamingNetworkIndex, + ::RoamingOperatorIndex, + Balance = BalanceOf, + { + /// A roaming network_server is created. (owner, roaming_network_server_id) + Created(AccountId, RoamingNetworkServerIndex), + /// A roaming network_server is transferred. (from, to, roaming_network_server_id) + Transferred(AccountId, AccountId, RoamingNetworkServerIndex), + /// A roaming network_server is available for sale. (owner, roaming_network_server_id, price) + PriceSet(AccountId, RoamingNetworkServerIndex, Option), + /// A roaming network_server is sold. (from, to, roaming_network_server_id, price) + Sold(AccountId, AccountId, RoamingNetworkServerIndex, Balance), + /// A roaming network_server is assigned to a network. (owner of network, roaming_network_server_id, roaming_network_id) + AssignedNetworkServerToNetwork(AccountId, RoamingNetworkServerIndex, RoamingNetworkIndex), + /// A roaming network_server is assigned to an operator. (owner of network, roaming_network_server_id, roaming_operator_id) + AssignedNetworkServerToOperator(AccountId, RoamingNetworkServerIndex, RoamingOperatorIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingNetworkServers { + /// Stores all the roaming network_servers, key is the roaming network_server id / index + pub RoamingNetworkServers get(fn roaming_network_server): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option; + + /// Stores the total number of roaming network_servers. i.e. the next roaming network_server index + pub RoamingNetworkServersCount get(fn roaming_network_servers_count): T::RoamingNetworkServerIndex; + + /// Get roaming network_server owner + pub RoamingNetworkServerOwners get(fn roaming_network_server_owner): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option; + + /// Get roaming network_server price. None means not for sale. + pub RoamingNetworkServerPrices get(fn roaming_network_server_price): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option>; + + /// Get roaming network_server network + pub RoamingNetworkServerNetwork get(fn roaming_network_server_network): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option; + + /// Get roaming network_server operators + pub RoamingNetworkServerOperator get(fn roaming_network_server_operators): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option; + + /// Get roaming network's network servers + pub RoamingNetworkNetworkServers get(fn roaming_network_network_servers): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option>; + + /// Get roaming operator's network servers + pub RoamingOperatorNetworkServers get(fn roaming_operator_network_servers): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming network_server + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_network_server_id = Self::next_roaming_network_server_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming network_server + let roaming_network_server = RoamingNetworkServer(unique_id); + Self::insert_roaming_network_server(&sender, roaming_network_server_id, roaming_network_server); + + Self::deposit_event(RawEvent::Created(sender, roaming_network_server_id)); + } + + /// Transfer a roaming network_server to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_network_server_id: T::RoamingNetworkServerIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_network_server_owner(roaming_network_server_id) == Some(sender.clone()), "Only owner can transfer roaming network_server"); + + Self::update_owner(&to, roaming_network_server_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_network_server_id)); + } + + /// Set a price for a roaming network_server for sale + /// None to delist the roaming network_server + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_price(origin, roaming_network_server_id: T::RoamingNetworkServerIndex, price: Option>) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_network_server_owner(roaming_network_server_id) == Some(sender.clone()), "Only owner can set price for roaming network_server"); + + if let Some(ref price) = price { + >::insert(roaming_network_server_id, price); + } else { + >::remove(roaming_network_server_id); + } + + Self::deposit_event(RawEvent::PriceSet(sender, roaming_network_server_id, price)); + } + + /// Buy a roaming network_server with max price willing to pay + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn buy(origin, roaming_network_server_id: T::RoamingNetworkServerIndex, price: BalanceOf) { + let sender = ensure_signed(origin)?; + + let owner = Self::roaming_network_server_owner(roaming_network_server_id); + ensure!(owner.is_some(), "RoamingNetworkServer owner does not exist"); + let owner = owner.unwrap(); + + let roaming_network_server_price = Self::roaming_network_server_price(roaming_network_server_id); + ensure!(roaming_network_server_price.is_some(), "RoamingNetworkServer not for sale"); + + let roaming_network_server_price = roaming_network_server_price.unwrap(); + ensure!(price >= roaming_network_server_price, "Price is too low"); + + T::Currency::transfer(&sender, &owner, roaming_network_server_price, ExistenceRequirement::AllowDeath)?; + + >::remove(roaming_network_server_id); + + Self::update_owner(&sender, roaming_network_server_id); + + Self::deposit_event(RawEvent::Sold(owner, sender, roaming_network_server_id, roaming_network_server_price)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_network_server_to_network( + origin, + roaming_network_server_id: T::RoamingNetworkServerIndex, + roaming_network_id: T::RoamingNetworkIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network id already exists + let is_roaming_network = > + ::exists_roaming_network(roaming_network_id).is_ok(); + ensure!(is_roaming_network, "RoamingNetwork does not exist"); + + // Ensure that caller of the function is the owner of the network id to assign the network_server to + ensure!( + >::is_roaming_network_owner(roaming_network_id, sender.clone()).is_ok(), + "Only the roaming network owner can assign itself a roaming network server" + ); + + Self::associate_network_server_with_network(roaming_network_server_id, roaming_network_id) + .expect("Unable to associate network server with network"); + + // Ensure that the given network_server id already exists + let roaming_network_server = Self::roaming_network_server(roaming_network_server_id); + ensure!(roaming_network_server.is_some(), "Invalid roaming_network_server_id"); + + // Ensure that the network_server is not already owned by a different network + // Unassign the network_server from any existing network since it may only be owned by one network + >::remove(roaming_network_server_id); + + // Assign the network_server owner to the given network (even if already belongs to them) + >::insert(roaming_network_server_id, roaming_network_id); + + Self::deposit_event(RawEvent::AssignedNetworkServerToNetwork(sender, roaming_network_server_id, roaming_network_id)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_network_server_to_operator( + origin, + roaming_network_server_id: T::RoamingNetworkServerIndex, + roaming_operator_id: T::RoamingOperatorIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given operator id already exists + let is_roaming_operator = > + ::exists_roaming_operator(roaming_operator_id).is_ok(); + ensure!(is_roaming_operator, "RoamingOperator does not exist"); + + // Ensure that caller of the function is the owner of the operator id to assign the network to + ensure!( + >::is_roaming_operator_owner(roaming_operator_id, sender.clone()).is_ok(), + "Only the roaming operator owner can assign itself a roaming network server" + ); + + Self::associate_network_server_with_operator(roaming_network_server_id, roaming_operator_id) + .expect("Unable to associate network server with operator"); + + // Ensure that the given network_server id already exists + let roaming_network_server = Self::roaming_network_server(roaming_network_server_id); + ensure!(roaming_network_server.is_some(), "Invalid roaming_network_server_id"); + + // Ensure that the network_server is not already owned by a different operator + // Unassign the network_server from any existing operator since it may only be owned by one operator + >::remove(roaming_network_server_id); + + // Assign the network_server owner to the given operator (even if already belongs to them) + >::insert(roaming_network_server_id, roaming_operator_id); + + Self::deposit_event(RawEvent::AssignedNetworkServerToOperator(sender, roaming_network_server_id, roaming_operator_id)); + } + } +} + +impl Module { + pub fn is_roaming_network_server_owner( + roaming_network_server_id: T::RoamingNetworkServerIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_network_server_owner(&roaming_network_server_id) + .map(|owner| owner == sender) + .unwrap_or(false), + "Sender is not owner of RoamingNetworkServer" + ); + Ok(()) + } + + pub fn exists_roaming_network_server( + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result { + match Self::roaming_network_server(roaming_network_server_id) { + Some(roaming_network_server) => Ok(roaming_network_server), + None => Err(DispatchError::Other("RoamingNetworkServer does not exist")), + } + } + + /// Only push the network server id onto the end of the vector if it does not already exist + pub fn associate_network_server_with_network( + roaming_network_server_id: T::RoamingNetworkServerIndex, + roaming_network_id: T::RoamingNetworkIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network id already exists as a key, + // and where its corresponding value is a vector that already contains the given network server id + if let Some(network_network_servers) = Self::roaming_network_network_servers(roaming_network_id) { + info!("Network id key {:?} exists with value {:?}", roaming_network_id, network_network_servers); + let not_network_contains_network_server = !network_network_servers.contains(&roaming_network_server_id); + ensure!(not_network_contains_network_server, "Network already contains the given network server id"); + info!("Network id key exists but its vector value does not contain the given network server id"); + >::mutate(roaming_network_id, |v| { + if let Some(value) = v { + value.push(roaming_network_server_id); + } + }); + info!( + "Associated network server {:?} with network {:?}", + roaming_network_server_id, + roaming_network_id + ); + Ok(()) + } else { + info!( + "Network id key does not yet exist. Creating the network key {:?} and appending the network server id \ + {:?} to its vector value", + roaming_network_id, + roaming_network_server_id + ); + >::insert(roaming_network_id, &vec![roaming_network_server_id]); + Ok(()) + } + } + + /// Only push the network server id onto the end of the vector if it does not already exist + pub fn associate_network_server_with_operator( + roaming_network_server_id: T::RoamingNetworkServerIndex, + roaming_operator_id: T::RoamingOperatorIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given operator id already exists as a key, + // and where its corresponding value is a vector that already contains the given network server id + if let Some(operator_network_servers) = Self::roaming_operator_network_servers(roaming_operator_id) { + info!("Operator id key {:?} exists with value {:?}", roaming_operator_id, operator_network_servers); + let not_operator_contains_network_server = !operator_network_servers.contains(&roaming_network_server_id); + ensure!(not_operator_contains_network_server, "Operator already contains the given network server id"); + info!("Operator id key exists but its vector value does not contain the given network server id"); + >::mutate(roaming_operator_id, |v| { + if let Some(value) = v { + value.push(roaming_network_server_id); + } + }); + info!( + "Associated network server {:?} with operator {:?}", + roaming_network_server_id, + roaming_operator_id + ); + Ok(()) + } else { + info!( + "Operator id key does not yet exist. Creating the operator key {:?} and appending the network server \ + id {:?} to its vector value", + roaming_operator_id, + roaming_network_server_id + ); + >::insert(roaming_operator_id, &vec![roaming_network_server_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_network_server_id() -> Result { + let roaming_network_server_id = Self::roaming_network_servers_count(); + if roaming_network_server_id == ::max_value() { + return Err(DispatchError::Other("RoamingNetworkServers count overflow")); + } + Ok(roaming_network_server_id) + } + + fn insert_roaming_network_server( + owner: &T::AccountId, + roaming_network_server_id: T::RoamingNetworkServerIndex, + roaming_network_server: RoamingNetworkServer, + ) { + // Create and store roaming network_server + >::insert(roaming_network_server_id, roaming_network_server); + >::put(roaming_network_server_id + One::one()); + >::insert(roaming_network_server_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_network_server_id: T::RoamingNetworkServerIndex) { + >::insert(roaming_network_server_id, to); + } +} diff --git a/pallets/roaming/roaming-network-servers/src/mock.rs b/pallets/roaming/roaming-network-servers/src/mock.rs new file mode 100644 index 00000000..71443c6c --- /dev/null +++ b/pallets/roaming/roaming-network-servers/src/mock.rs @@ -0,0 +1,126 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} + +pub type RoamingNetworkServerModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-network-servers/src/tests.rs b/pallets/roaming/roaming-network-servers/src/tests.rs new file mode 100644 index 00000000..6383b23f --- /dev/null +++ b/pallets/roaming/roaming-network-servers/src/tests.rs @@ -0,0 +1,119 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), 0); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_none()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), None); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingNetworkServerModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), 1); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_some()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), Some(1)); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), None); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingNetworkServerModule::create(Origin::signed(1)), "RoamingNetworkServers count overflow"); + // Verify Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), u64::max_value()); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_none()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), None); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkServerModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingNetworkServerModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), 1); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_some()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), Some(2)); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), None); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkServerModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingNetworkServerModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming network_server" + ); + assert_noop!( + RoamingNetworkServerModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming network_server" + ); + // Verify Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), 1); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_some()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), Some(1)); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), None); + }); +} + +#[test] +fn set_price_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkServerModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingNetworkServerModule::set_price(Origin::signed(1), 0, Some(10))); + // Verify Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), 1); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_some()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), Some(1)); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), Some(10)); + }); +} + +#[test] +fn buy_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkServerModule::create(Origin::signed(1))); + assert_ok!(RoamingNetworkServerModule::set_price(Origin::signed(1), 0, Some(10))); + // Call Functions + assert_ok!(RoamingNetworkServerModule::buy(Origin::signed(2), 0, 10)); + // Verify Storage + assert_eq!(RoamingNetworkServerModule::roaming_network_servers_count(), 1); + assert!(RoamingNetworkServerModule::roaming_network_server(0).is_some()); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_owner(0), Some(2)); + assert_eq!(RoamingNetworkServerModule::roaming_network_server_price(0), None); + assert_eq!(Balances::free_balance(1), 20); + assert_eq!(Balances::free_balance(2), 10); + }); +} diff --git a/pallets/roaming/roaming-networks/Cargo.toml b/pallets/roaming/roaming-networks/Cargo.toml new file mode 100644 index 00000000..9603c295 --- /dev/null +++ b/pallets/roaming/roaming-networks/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = 'roaming-networks' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[package.metadata.docs.rs] +targets = ['x86_64-unknown-linux-gnu'] + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'safe-mix/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } diff --git a/pallets/roaming/roaming-networks/src/benchmarking.rs b/pallets/roaming/roaming-networks/src/benchmarking.rs new file mode 100644 index 00000000..3ec8f376 --- /dev/null +++ b/pallets/roaming/roaming-networks/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingNetworks; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingNetworks, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-networks/src/lib.rs b/pallets/roaming/roaming-networks/src/lib.rs new file mode 100644 index 00000000..67361134 --- /dev/null +++ b/pallets/roaming/roaming-networks/src/lib.rs @@ -0,0 +1,298 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, + StorageMap, + StorageValue, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config { + type Event: From> + Into<::Event>; + type RoamingNetworkIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingNetwork(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingNetworkIndex, + ::RoamingOperatorIndex, + Balance = BalanceOf, + { + /// A roaming network is created. (owner, roaming_network_id) + Created(AccountId, RoamingNetworkIndex), + /// A roaming network is transferred. (from, to, roaming_network_id) + Transferred(AccountId, AccountId, RoamingNetworkIndex), + /// A roaming network is available for sale. (owner, roaming_network_id, price) + PriceSet(AccountId, RoamingNetworkIndex, Option), + /// A roaming network is sold. (from, to, roaming_network_id, price) + Sold(AccountId, AccountId, RoamingNetworkIndex, Balance), + /// A roaming network is assigned to an operator. (owner of operator, roaming_network_id, roaming_operator_id) + AssignedNetworkToOperator(AccountId, RoamingNetworkIndex, RoamingOperatorIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingNetworks { + + /// Stores all the roaming networks, key is the roaming network id / index + pub RoamingNetworks get(fn roaming_network): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option; + + /// Stores the total number of roaming networks. i.e. the next roaming network index + pub RoamingNetworksCount get(fn roaming_networks_count): T::RoamingNetworkIndex; + + /// Get roaming network owner + pub RoamingNetworkOwners get(fn roaming_network_owner): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option; + + /// Get roaming network price. None means not for sale. + pub RoamingNetworkPrices get(fn roaming_network_price): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option>; + + /// Get roaming operator belonging to a network + pub RoamingNetworkOperator get(fn roaming_network_operator): map hasher(opaque_blake2_256) T::RoamingNetworkIndex => Option; + + /// Get roaming operator networks + pub RoamingOperatorNetworks get(fn roaming_operator_networks): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming network + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_network_id = Self::next_roaming_network_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming network + let roaming_network = RoamingNetwork(unique_id); + Self::insert_roaming_network(&sender, roaming_network_id, roaming_network); + + Self::deposit_event(RawEvent::Created(sender, roaming_network_id)); + } + + /// Transfer a roaming network to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_network_id: T::RoamingNetworkIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_network_owner(roaming_network_id) == Some(sender.clone()), "Only owner can transfer roaming network"); + + Self::update_owner(&to, roaming_network_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_network_id)); + } + + /// Set a price for a roaming network for sale + /// None to delist the roaming network + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_price(origin, roaming_network_id: T::RoamingNetworkIndex, price: Option>) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_network_owner(roaming_network_id) == Some(sender.clone()), "Only owner can set price for roaming network"); + + if let Some(ref price) = price { + >::insert(roaming_network_id, price); + } else { + >::remove(roaming_network_id); + } + + Self::deposit_event(RawEvent::PriceSet(sender, roaming_network_id, price)); + } + + /// Buy a roaming network with max price willing to pay + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn buy(origin, roaming_network_id: T::RoamingNetworkIndex, price: BalanceOf) { + let sender = ensure_signed(origin)?; + + let owner = Self::roaming_network_owner(roaming_network_id); + ensure!(owner.is_some(), "RoamingNetwork does not exist"); + let owner = owner.unwrap(); + + let roaming_network_price = Self::roaming_network_price(roaming_network_id); + ensure!(roaming_network_price.is_some(), "RoamingNetwork not for sale"); + + let roaming_network_price = roaming_network_price.unwrap(); + ensure!(price >= roaming_network_price, "Price is too low"); + + T::Currency::transfer(&sender, &owner, roaming_network_price, ExistenceRequirement::AllowDeath)?; + + >::remove(roaming_network_id); + + Self::update_owner(&sender, roaming_network_id); + + Self::deposit_event(RawEvent::Sold(owner, sender, roaming_network_id, roaming_network_price)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_network_to_operator( + origin, + roaming_network_id: T::RoamingNetworkIndex, + roaming_operator_id: T::RoamingOperatorIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given operator id already exists + let is_roaming_operator = > + ::exists_roaming_operator(roaming_operator_id).is_ok(); + ensure!(is_roaming_operator, "RoamingOperator does not exist"); + + // Ensure that caller of the function is the owner of the operator id to assign the network to + ensure!( + >::is_roaming_operator_owner(roaming_operator_id, sender.clone()).is_ok(), + "Only the roaming operator owner can assign itself a roaming network" + ); + + Self::associate_network_with_operator(roaming_network_id, roaming_operator_id) + .expect("Unable to associate network with operator"); + + // Ensure that the given network id already exists + let roaming_network = Self::roaming_network(roaming_network_id); + ensure!(roaming_network.is_some(), "Invalid roaming_network_id"); + + // Ensure that the network is not already owned by a different operator + // Unassign the network from any existing operator since it may only be owned by one operator + >::remove(roaming_network_id); + + // Assign the network owner to the given operator (even if already belongs to them) + >::insert(roaming_network_id, roaming_operator_id); + + Self::deposit_event(RawEvent::AssignedNetworkToOperator(sender, roaming_network_id, roaming_operator_id)); + } + } +} + +impl Module { + pub fn is_roaming_network_owner( + roaming_network_id: T::RoamingNetworkIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_network_owner(&roaming_network_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of RoamingNetwork" + ); + Ok(()) + } + + pub fn exists_roaming_network(roaming_network_id: T::RoamingNetworkIndex) -> Result { + match Self::roaming_network(roaming_network_id) { + Some(roaming_network) => Ok(roaming_network), + None => Err(DispatchError::Other("RoamingNetwork does not exist")), + } + } + + /// Only push the network id onto the end of the vector if it does not already exist + pub fn associate_network_with_operator( + roaming_network_id: T::RoamingNetworkIndex, + roaming_operator_id: T::RoamingOperatorIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given operator id already exists as a key, + // and where its corresponding value is a vector that already contains the given network id + if let Some(operator_networks) = Self::roaming_operator_networks(roaming_operator_id) { + info!("Operator id key {:?} exists with value {:?}", roaming_operator_id, operator_networks); + let not_operator_contains_network = !operator_networks.contains(&roaming_network_id); + ensure!(not_operator_contains_network, "Operator already contains the given network id"); + info!("Operator id key exists but its vector value does not contain the given network id"); + >::mutate(roaming_operator_id, |v| { + if let Some(value) = v { + value.push(roaming_network_id); + } + }); + info!("Associated network {:?} with operator {:?}", roaming_network_id, roaming_operator_id); + Ok(()) + } else { + info!( + "Operator id key does not yet exist. Creating the operator key {:?} and appending the network id {:?} \ + to its vector value", + roaming_operator_id, + roaming_network_id + ); + >::insert(roaming_operator_id, &vec![roaming_network_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_network_id() -> Result { + let roaming_network_id = Self::roaming_networks_count(); + if roaming_network_id == ::max_value() { + return Err(DispatchError::Other("RoamingNetworks count overflow")); + } + Ok(roaming_network_id) + } + + fn insert_roaming_network( + owner: &T::AccountId, + roaming_network_id: T::RoamingNetworkIndex, + roaming_network: RoamingNetwork, + ) { + // Create and store roaming network + >::insert(roaming_network_id, roaming_network); + >::put(roaming_network_id + One::one()); + >::insert(roaming_network_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_network_id: T::RoamingNetworkIndex) { + >::insert(roaming_network_id, to); + } +} diff --git a/pallets/roaming/roaming-networks/src/mock.rs b/pallets/roaming/roaming-networks/src/mock.rs new file mode 100644 index 00000000..b741cf73 --- /dev/null +++ b/pallets/roaming/roaming-networks/src/mock.rs @@ -0,0 +1,123 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} + +pub type RoamingNetworkModule = Pallet; + + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-networks/src/tests.rs b/pallets/roaming/roaming-networks/src/tests.rs new file mode 100644 index 00000000..8f14e187 --- /dev/null +++ b/pallets/roaming/roaming-networks/src/tests.rs @@ -0,0 +1,119 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), 0); + assert!(RoamingNetworkModule::roaming_network(0).is_none()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), None); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingNetworkModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), 1); + assert!(RoamingNetworkModule::roaming_network(0).is_some()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), Some(1)); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), None); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingNetworkModule::create(Origin::signed(1)), "RoamingNetworks count overflow"); + // Verify Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), u64::max_value()); + assert!(RoamingNetworkModule::roaming_network(0).is_none()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), None); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingNetworkModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), 1); + assert!(RoamingNetworkModule::roaming_network(0).is_some()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), Some(2)); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), None); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingNetworkModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming network" + ); + assert_noop!( + RoamingNetworkModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming network" + ); + // Verify Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), 1); + assert!(RoamingNetworkModule::roaming_network(0).is_some()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), Some(1)); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), None); + }); +} + +#[test] +fn set_price_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingNetworkModule::set_price(Origin::signed(1), 0, Some(10))); + // Verify Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), 1); + assert!(RoamingNetworkModule::roaming_network(0).is_some()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), Some(1)); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), Some(10)); + }); +} + +#[test] +fn buy_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingNetworkModule::create(Origin::signed(1))); + assert_ok!(RoamingNetworkModule::set_price(Origin::signed(1), 0, Some(10))); + // Call Functions + assert_ok!(RoamingNetworkModule::buy(Origin::signed(2), 0, 10)); + // Verify Storage + assert_eq!(RoamingNetworkModule::roaming_networks_count(), 1); + assert!(RoamingNetworkModule::roaming_network(0).is_some()); + assert_eq!(RoamingNetworkModule::roaming_network_owner(0), Some(2)); + assert_eq!(RoamingNetworkModule::roaming_network_price(0), None); + assert_eq!(Balances::free_balance(1), 20); + assert_eq!(Balances::free_balance(2), 10); + }); +} diff --git a/pallets/roaming/roaming-operators/Cargo.toml b/pallets/roaming/roaming-operators/Cargo.toml new file mode 100644 index 00000000..8a8a4b61 --- /dev/null +++ b/pallets/roaming/roaming-operators/Cargo.toml @@ -0,0 +1,50 @@ +[package] +name = 'roaming-operators' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[package.metadata.docs.rs] +targets = ['x86_64-unknown-linux-gnu'] + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +[dev-dependencies] + diff --git a/pallets/roaming/roaming-operators/src/benchmarking.rs b/pallets/roaming/roaming-operators/src/benchmarking.rs new file mode 100644 index 00000000..d0fadace --- /dev/null +++ b/pallets/roaming/roaming-operators/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingOperators; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingOperators, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-operators/src/lib.rs b/pallets/roaming/roaming-operators/src/lib.rs new file mode 100644 index 00000000..f63349ab --- /dev/null +++ b/pallets/roaming/roaming-operators/src/lib.rs @@ -0,0 +1,221 @@ +#![cfg_attr(not(feature = "std"), no_std)] +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + dispatch, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config { + type Event: From> + Into<::Event>; + type RoamingOperatorIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type Currency: Currency; + type Randomness: Randomness; +} + +type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingOperator(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingOperatorIndex, + Balance = BalanceOf, + { + /// A roaming operator is created. (owner, roaming_operator_id) + Created(AccountId, RoamingOperatorIndex), + /// A roaming operator is transferred. (from, to, roaming_operator_id) + Transferred(AccountId, AccountId, RoamingOperatorIndex), + /// A roaming operator is available for sale. (owner, roaming_operator_id, price) + PriceSet(AccountId, RoamingOperatorIndex, Option), + /// A roaming operator is sold. (from, to, roaming_operator_id, price) + Sold(AccountId, AccountId, RoamingOperatorIndex, Balance), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingOperators { + /// Stores all the roaming operators, key is the roaming operator id / index + pub RoamingOperators get(fn roaming_operator): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option; + + /// Stores the total number of roaming operators. i.e. the next roaming operator index + pub RoamingOperatorsCount get(fn roaming_operators_count): T::RoamingOperatorIndex; + + /// Get roaming operator owner + pub RoamingOperatorOwners get(fn roaming_operator_owner): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option; + + /// Get roaming operator price. None means not for sale. + pub RoamingOperatorPrices get(fn roaming_operator_price): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming operator + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) -> dispatch::DispatchResult { + let sender = ensure_signed(origin)?; + let roaming_operator_id = Self::next_roaming_operator_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming operator + let roaming_operator = RoamingOperator(unique_id); + Self::insert_roaming_operator(&sender, roaming_operator_id, roaming_operator); + + Self::deposit_event(RawEvent::Created(sender, roaming_operator_id)); + Ok(()) + } + + /// Transfer a roaming operator to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_operator_id: T::RoamingOperatorIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_operator_owner(roaming_operator_id) == Some(sender.clone()), "Only owner can transfer roaming operator"); + + Self::update_owner(&to, roaming_operator_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_operator_id)); + } + + /// Set a price for a roaming operator for sale + /// None to delist the roaming operator + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_price(origin, roaming_operator_id: T::RoamingOperatorIndex, price: Option>) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_operator_owner(roaming_operator_id) == Some(sender.clone()), "Only owner can set price for roaming operator"); + + if let Some(ref price) = price { + >::insert(roaming_operator_id, price); + } else { + >::remove(roaming_operator_id); + } + + Self::deposit_event(RawEvent::PriceSet(sender, roaming_operator_id, price)); + } + + /// Buy a roaming operator with max price willing to pay + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn buy(origin, roaming_operator_id: T::RoamingOperatorIndex, price: BalanceOf) { + let sender = ensure_signed(origin)?; + + let owner = Self::roaming_operator_owner(roaming_operator_id); + ensure!(owner.is_some(), "RoamingOperator owner does not exist"); + let owner = owner.unwrap(); + + let roaming_operator_price = Self::roaming_operator_price(roaming_operator_id); + ensure!(roaming_operator_price.is_some(), "RoamingOperator not for sale"); + + let roaming_operator_price = roaming_operator_price.unwrap(); + ensure!(price >= roaming_operator_price, "Price is too low"); + + T::Currency::transfer(&sender, &owner, roaming_operator_price, ExistenceRequirement::AllowDeath)?; + + >::remove(roaming_operator_id); + + Self::update_owner(&sender, roaming_operator_id); + + Self::deposit_event(RawEvent::Sold(owner, sender, roaming_operator_id, roaming_operator_price)); + } + } +} + +impl Module { + pub fn is_roaming_operator_owner( + roaming_operator_id: T::RoamingOperatorIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_operator_owner(&roaming_operator_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of RoamingOperator" + ); + Ok(()) + } + + pub fn exists_roaming_operator( + roaming_operator_id: T::RoamingOperatorIndex, + ) -> Result { + match Self::roaming_operator(roaming_operator_id) { + Some(roaming_operator) => Ok(roaming_operator), + None => Err(DispatchError::Other("RoamingOperator does not exist")), + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_operator_id() -> Result { + let roaming_operator_id = Self::roaming_operators_count(); + if roaming_operator_id == ::max_value() { + return Err(DispatchError::Other("RoamingOperators count overflow")); + } + Ok(roaming_operator_id) + } + + fn insert_roaming_operator( + owner: &T::AccountId, + roaming_operator_id: T::RoamingOperatorIndex, + roaming_operator: RoamingOperator, + ) { + // Create and store roaming operator + >::insert(roaming_operator_id, roaming_operator); + >::put(roaming_operator_id + One::one()); + >::insert(roaming_operator_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_operator_id: T::RoamingOperatorIndex) { + >::insert(roaming_operator_id, to); + } +} diff --git a/pallets/roaming/roaming-operators/src/mock.rs b/pallets/roaming/roaming-operators/src/mock.rs new file mode 100644 index 00000000..a0b2a995 --- /dev/null +++ b/pallets/roaming/roaming-operators/src/mock.rs @@ -0,0 +1,118 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} + +pub type RoamingOperatorModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-operators/src/tests.rs b/pallets/roaming/roaming-operators/src/tests.rs new file mode 100644 index 00000000..28c63353 --- /dev/null +++ b/pallets/roaming/roaming-operators/src/tests.rs @@ -0,0 +1,119 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), 0); + assert!(RoamingOperatorModule::roaming_operator(0).is_none()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), None); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingOperatorModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), 1); + assert!(RoamingOperatorModule::roaming_operator(0).is_some()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), Some(1)); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), None); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingOperatorModule::create(Origin::signed(1)), "RoamingOperators count overflow"); + // Verify Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), u64::max_value()); + assert!(RoamingOperatorModule::roaming_operator(0).is_none()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), None); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOperatorModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingOperatorModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), 1); + assert!(RoamingOperatorModule::roaming_operator(0).is_some()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), Some(2)); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), None); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOperatorModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingOperatorModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming operator" + ); + assert_noop!( + RoamingOperatorModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming operator" + ); + // Verify Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), 1); + assert!(RoamingOperatorModule::roaming_operator(0).is_some()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), Some(1)); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), None); + }); +} + +#[test] +fn set_price_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOperatorModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingOperatorModule::set_price(Origin::signed(1), 0, Some(10))); + // Verify Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), 1); + assert!(RoamingOperatorModule::roaming_operator(0).is_some()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), Some(1)); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), Some(10)); + }); +} + +#[test] +fn buy_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOperatorModule::create(Origin::signed(1))); + assert_ok!(RoamingOperatorModule::set_price(Origin::signed(1), 0, Some(10))); + // Call Functions + assert_ok!(RoamingOperatorModule::buy(Origin::signed(2), 0, 10)); + // Verify Storage + assert_eq!(RoamingOperatorModule::roaming_operators_count(), 1); + assert!(RoamingOperatorModule::roaming_operator(0).is_some()); + assert_eq!(RoamingOperatorModule::roaming_operator_owner(0), Some(2)); + assert_eq!(RoamingOperatorModule::roaming_operator_price(0), None); + assert_eq!(Balances::free_balance(1), 20); + assert_eq!(Balances::free_balance(2), 10); + }); +} diff --git a/pallets/roaming/roaming-organizations/Cargo.toml b/pallets/roaming/roaming-organizations/Cargo.toml new file mode 100644 index 00000000..e068fc44 --- /dev/null +++ b/pallets/roaming/roaming-organizations/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = 'roaming-organizations' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-network-servers/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-organizations/src/benchmarking.rs b/pallets/roaming/roaming-organizations/src/benchmarking.rs new file mode 100644 index 00000000..d565cb45 --- /dev/null +++ b/pallets/roaming/roaming-organizations/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingOrganizations; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingOrganizations, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-organizations/src/lib.rs b/pallets/roaming/roaming-organizations/src/lib.rs new file mode 100644 index 00000000..6a598a4d --- /dev/null +++ b/pallets/roaming/roaming-organizations/src/lib.rs @@ -0,0 +1,313 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_network_servers::Config { + type Event: From> + Into<::Event>; + type RoamingOrganizationIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingOrganization(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingOrganizationIndex, + ::RoamingNetworkServerIndex, + Balance = BalanceOf, + { + /// A roaming organization is created. (owner, roaming_organization_id) + Created(AccountId, RoamingOrganizationIndex), + /// A roaming organization is transferred. (from, to, roaming_organization_id) + Transferred(AccountId, AccountId, RoamingOrganizationIndex), + /// A roaming organization is available for sale. (owner, roaming_organization_id, price) + PriceSet(AccountId, RoamingOrganizationIndex, Option), + /// A roaming organization is sold. (from, to, roaming_organization_id, price) + Sold(AccountId, AccountId, RoamingOrganizationIndex, Balance), + /// A roaming organization is assigned to a network server. (owner of network server, roaming_organization_id, roaming_network_server_id) + AssignedOrganizationToNetworkServer(AccountId, RoamingOrganizationIndex, RoamingNetworkServerIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingOrganizations { + /// Stores all the roaming organizations, key is the roaming organization id / index + pub RoamingOrganizations get(fn roaming_organization): map hasher(opaque_blake2_256) T::RoamingOrganizationIndex => Option; + + /// Stores the total number of roaming organizations. i.e. the next roaming organization index + pub RoamingOrganizationsCount get(fn roaming_organizations_count): T::RoamingOrganizationIndex; + + /// Get roaming organization owner + pub RoamingOrganizationOwners get(fn roaming_organization_owner): map hasher(opaque_blake2_256) T::RoamingOrganizationIndex => Option; + + /// Get roaming organization price. None means not for sale. + pub RoamingOrganizationPrices get(fn roaming_organization_price): map hasher(opaque_blake2_256) T::RoamingOrganizationIndex => Option>; + + /// Get roaming organization network server + pub RoamingOrganizationNetworkServers get(fn roaming_organization_network_server): map hasher(opaque_blake2_256) T::RoamingOrganizationIndex => Option; + + /// Get roaming network server organizations + pub RoamingNetworkServerOrganizations get(fn roaming_network_server_organizations): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming organization + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_organization_id = Self::next_roaming_organization_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming organization + let roaming_organization = RoamingOrganization(unique_id); + Self::insert_roaming_organization(&sender, roaming_organization_id, roaming_organization); + + Self::deposit_event(RawEvent::Created(sender, roaming_organization_id)); + } + + /// Transfer a roaming organization to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_organization_id: T::RoamingOrganizationIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_organization_owner(roaming_organization_id) == Some(sender.clone()), "Only owner can transfer roaming organization"); + + Self::update_owner(&to, roaming_organization_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_organization_id)); + } + + /// Set a price for a roaming organization for sale + /// None to delist the roaming organization + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_price(origin, roaming_organization_id: T::RoamingOrganizationIndex, price: Option>) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_organization_owner(roaming_organization_id) == Some(sender.clone()), "Only owner can set price for roaming organization"); + + if let Some(ref price) = price { + >::insert(roaming_organization_id, price); + } else { + >::remove(roaming_organization_id); + } + + Self::deposit_event(RawEvent::PriceSet(sender, roaming_organization_id, price)); + } + + /// Buy a roaming organization with max price willing to pay + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn buy(origin, roaming_organization_id: T::RoamingOrganizationIndex, price: BalanceOf) { + let sender = ensure_signed(origin)?; + + let owner = Self::roaming_organization_owner(roaming_organization_id); + ensure!(owner.is_some(), "RoamingOrganization owner does not exist"); + let owner = owner.unwrap(); + + let roaming_organization_price = Self::roaming_organization_price(roaming_organization_id); + ensure!(roaming_organization_price.is_some(), "RoamingOrganization not for sale"); + + let roaming_organization_price = roaming_organization_price.unwrap(); + ensure!(price >= roaming_organization_price, "Price is too low"); + + T::Currency::transfer(&sender, &owner, roaming_organization_price, ExistenceRequirement::AllowDeath)?; + + >::remove(roaming_organization_id); + + Self::update_owner(&sender, roaming_organization_id); + + Self::deposit_event(RawEvent::Sold(owner, sender, roaming_organization_id, roaming_organization_price)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_organization_to_network_server( + origin, + roaming_organization_id: T::RoamingOrganizationIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network server id already exists + let is_roaming_network_server = > + ::exists_roaming_network_server(roaming_network_server_id).is_ok(); + ensure!(is_roaming_network_server, "RoamingNetworkServer does not exist"); + + // Ensure that caller of the function is the owner of the network server id to assign the organization to + ensure!( + >::is_roaming_network_server_owner(roaming_network_server_id, sender.clone()).is_ok(), + "Only the roaming network_server owner can assign itself a roaming organization" + ); + + Self::associate_organization_with_network_server(roaming_organization_id, roaming_network_server_id) + .expect("Unable to associate organization with network server"); + + // Ensure that the given organization id already exists + let roaming_organization = Self::roaming_organization(roaming_organization_id); + ensure!(roaming_organization.is_some(), "Invalid roaming_organization_id"); + + // Ensure that the organization is not already owned by a different network server + // Unassign the organization from any existing network since it may only be owned by one network server + >::remove(roaming_organization_id); + + // Assign the organization owner to the given network server (even if already belongs to them) + >::insert(roaming_organization_id, roaming_network_server_id); + + Self::deposit_event(RawEvent::AssignedOrganizationToNetworkServer(sender, roaming_organization_id, roaming_network_server_id)); + } + } +} + +impl Module { + pub fn is_roaming_organization_owner( + roaming_organization_id: T::RoamingOrganizationIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_organization_owner(&roaming_organization_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of RoamingOrganization" + ); + Ok(()) + } + + pub fn exists_roaming_organization( + roaming_organization_id: T::RoamingOrganizationIndex, + ) -> Result { + match Self::roaming_organization(roaming_organization_id) { + Some(roaming_organization) => Ok(roaming_organization), + None => Err(DispatchError::Other("RoamingOrganization does not exist")), + } + } + + /// Only push the organization id onto the end of the vector if it does not already exist + pub fn associate_organization_with_network_server( + roaming_organization_id: T::RoamingOrganizationIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network server id already exists as a key, + // and where its corresponding value is a vector that already contains the given organization id + if let Some(network_server_organizations) = + Self::roaming_network_server_organizations(roaming_network_server_id) + { + info!( + "Network Server id key {:?} exists with value {:?}", + roaming_network_server_id, + network_server_organizations + ); + let not_network_server_contains_organization = + !network_server_organizations.contains(&roaming_organization_id); + ensure!( + not_network_server_contains_organization, + "Network Server already contains the given organization id" + ); + info!( + "Network Server id key exists but its vector value does not contain the given organization id" + ); + >::mutate(roaming_network_server_id, |v| { + if let Some(value) = v { + value.push(roaming_organization_id); + } + }); + info!( + "Associated organization {:?} with network server {:?}", + roaming_organization_id, + roaming_network_server_id + ); + Ok(()) + } else { + info!( + "Network Server id key does not yet exist. Creating the network server key {:?} and appending the \ + organization id {:?} to its vector value", + roaming_network_server_id, + roaming_organization_id + ); + >::insert(roaming_network_server_id, &vec![roaming_organization_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_organization_id() -> Result { + let roaming_organization_id = Self::roaming_organizations_count(); + if roaming_organization_id == ::max_value() { + return Err(DispatchError::Other("RoamingOrganizations count overflow")); + } + Ok(roaming_organization_id) + } + + fn insert_roaming_organization( + owner: &T::AccountId, + roaming_organization_id: T::RoamingOrganizationIndex, + roaming_organization: RoamingOrganization, + ) { + // Create and store roaming organization + >::insert(roaming_organization_id, roaming_organization); + >::put(roaming_organization_id + One::one()); + >::insert(roaming_organization_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_organization_id: T::RoamingOrganizationIndex) { + >::insert(roaming_organization_id, to); + } +} diff --git a/pallets/roaming/roaming-organizations/src/mock.rs b/pallets/roaming/roaming-organizations/src/mock.rs new file mode 100644 index 00000000..ea03da4c --- /dev/null +++ b/pallets/roaming/roaming-organizations/src/mock.rs @@ -0,0 +1,130 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} + +pub type RoamingOrganizationModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-organizations/src/tests.rs b/pallets/roaming/roaming-organizations/src/tests.rs new file mode 100644 index 00000000..d91630f3 --- /dev/null +++ b/pallets/roaming/roaming-organizations/src/tests.rs @@ -0,0 +1,119 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), 0); + assert!(RoamingOrganizationModule::roaming_organization(0).is_none()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), None); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingOrganizationModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), 1); + assert!(RoamingOrganizationModule::roaming_organization(0).is_some()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), Some(1)); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), None); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingOrganizationModule::create(Origin::signed(1)), "RoamingOrganizations count overflow"); + // Verify Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), u64::max_value()); + assert!(RoamingOrganizationModule::roaming_organization(0).is_none()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), None); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOrganizationModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingOrganizationModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), 1); + assert!(RoamingOrganizationModule::roaming_organization(0).is_some()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), Some(2)); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), None); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOrganizationModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingOrganizationModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming organization" + ); + assert_noop!( + RoamingOrganizationModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming organization" + ); + // Verify Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), 1); + assert!(RoamingOrganizationModule::roaming_organization(0).is_some()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), Some(1)); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), None); + }); +} + +#[test] +fn set_price_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOrganizationModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingOrganizationModule::set_price(Origin::signed(1), 0, Some(10))); + // Verify Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), 1); + assert!(RoamingOrganizationModule::roaming_organization(0).is_some()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), Some(1)); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), Some(10)); + }); +} + +#[test] +fn buy_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingOrganizationModule::create(Origin::signed(1))); + assert_ok!(RoamingOrganizationModule::set_price(Origin::signed(1), 0, Some(10))); + // Call Functions + assert_ok!(RoamingOrganizationModule::buy(Origin::signed(2), 0, 10)); + // Verify Storage + assert_eq!(RoamingOrganizationModule::roaming_organizations_count(), 1); + assert!(RoamingOrganizationModule::roaming_organization(0).is_some()); + assert_eq!(RoamingOrganizationModule::roaming_organization_owner(0), Some(2)); + assert_eq!(RoamingOrganizationModule::roaming_organization_price(0), None); + assert_eq!(Balances::free_balance(1), 20); + assert_eq!(Balances::free_balance(2), 10); + }); +} diff --git a/pallets/roaming/roaming-packet-bundles/Cargo.toml b/pallets/roaming/roaming-packet-bundles/Cargo.toml new file mode 100644 index 00000000..1d39fcf9 --- /dev/null +++ b/pallets/roaming/roaming-packet-bundles/Cargo.toml @@ -0,0 +1,60 @@ +[package] +name = 'roaming-packet-bundles' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-network-servers/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'roaming-organizations/std', + 'roaming-devices/std', + 'roaming-sessions/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-sessions = { default-features = false, package = 'roaming-sessions', path = '../roaming-sessions' } +roaming-devices = { default-features = false, package = 'roaming-devices', path = '../roaming-devices' } +roaming-organizations = { default-features = false, package = 'roaming-organizations', path = '../roaming-organizations' } +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-packet-bundles/src/benchmarking.rs b/pallets/roaming/roaming-packet-bundles/src/benchmarking.rs new file mode 100644 index 00000000..62e3f931 --- /dev/null +++ b/pallets/roaming/roaming-packet-bundles/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingPacketBundles; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingPacketBundles, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-packet-bundles/src/lib.rs b/pallets/roaming/roaming-packet-bundles/src/lib.rs new file mode 100644 index 00000000..680ab443 --- /dev/null +++ b/pallets/roaming/roaming-packet-bundles/src/lib.rs @@ -0,0 +1,643 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Currency, + ExistenceRequirement, + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec +#[macro_use] +extern crate alloc; // Required to use Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + + roaming_operators::Config + + roaming_network_servers::Config + + roaming_devices::Config + + roaming_sessions::Config +{ + type Event: From> + Into<::Event>; + type RoamingPacketBundleIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingPacketBundleReceivedAtHome: Parameter + Member + Default; + type RoamingPacketBundleReceivedPacketsCount: Parameter + Member + Default; + type RoamingPacketBundleReceivedPacketsOkCount: Parameter + Member + Default; + type RoamingPacketBundleExternalDataStorageHash: Parameter + Member + Default; +} + +type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingPacketBundle(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingPacketBundleReceiver { + packet_bundle_received_at_home: U, + packet_bundle_received_packets_count: V, + packet_bundle_received_packets_ok_count: W, + packet_bundle_received_started_at_block: X, + packet_bundle_received_ended_at_block: Y, + packet_bundle_external_data_storage_hash: Z, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingPacketBundleIndex, + ::RoamingPacketBundleReceivedAtHome, + ::RoamingPacketBundleReceivedPacketsCount, + ::RoamingPacketBundleReceivedPacketsOkCount, + ::RoamingPacketBundleExternalDataStorageHash, + // ::RoamingDeviceIndex, + ::RoamingSessionIndex, + ::RoamingNetworkServerIndex, + // ::RoamingOperatorIndex, + Balance = BalanceOf, + ::BlockNumber, + { + /// A roaming packet_bundle is created. (owner, roaming_packet_bundle_id) + Created(AccountId, RoamingPacketBundleIndex), + /// A roaming packet_bundle is transferred. (from, to, roaming_packet_bundle_id) + Transferred(AccountId, AccountId, RoamingPacketBundleIndex), + /// A roaming packet_bundle is available for sale. (owner, roaming_packet_bundle_id, price) + PriceSet(AccountId, RoamingPacketBundleIndex, Option), + /// A roaming packet_bundle is sold. (from, to, roaming_packet_bundle_id, price) + Sold(AccountId, AccountId, RoamingPacketBundleIndex, Balance), + // /// A roaming packet_bundle receiveruration + // RoamingPacketBundleReceiverSet(AccountId, RoamingPacketBundleIndex, RoamingPacketBundleNextBillingAt, RoamingPacketBundleFrequencyInDays), + /// A roaming packet_bundle receiver was set + RoamingPacketBundleReceiverSet(AccountId, RoamingPacketBundleIndex, RoamingNetworkServerIndex, RoamingPacketBundleReceivedAtHome, + RoamingPacketBundleReceivedPacketsCount, RoamingPacketBundleReceivedPacketsOkCount, BlockNumber, + BlockNumber, RoamingPacketBundleExternalDataStorageHash), + // /// A roaming packet_bundle is assigned to a operator. (owner of session, roaming_packet_bundle_id, roaming_operator_id) + // AssignedPacketBundleToOperator(AccountId, RoamingPacketBundleIndex, RoamingOperatorIndex), + /// A roaming packet_bundle is assigned to a session. (owner of session, roaming_packet_bundle_id, roaming_session_id) + AssignedPacketBundleToSession(AccountId, RoamingPacketBundleIndex, RoamingSessionIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingPacketBundles { + /// Stores all the roaming packet_bundle, key is the roaming packet_bundle id / index + pub RoamingPacketBundles get(fn roaming_packet_bundle): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option; + + /// Stores the total number of roaming packet_bundles. i.e. the next roaming packet_bundle index + pub RoamingPacketBundlesCount get(fn roaming_packet_bundles_count): T::RoamingPacketBundleIndex; + + /// Get roaming packet_bundle owner + pub RoamingPacketBundleOwners get(fn roaming_packet_bundle_owner): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option; + + /// Get roaming packet_bundle price. None means not for sale. + pub RoamingPacketBundlePrices get(fn roaming_packet_bundle_price): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option>; + + // /// Get roaming packet_bundle receiver + // pub RoamingPacketBundleReceivers get(fn roaming_packet_bundle_receivers): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option>; + + /// Get roaming packet_bundle receiver + pub RoamingPacketBundleReceivers get(fn roaming_packet_bundle_receivers): map hasher(opaque_blake2_256) (T::RoamingPacketBundleIndex, T::RoamingNetworkServerIndex) => + Option>; + + /// NetworkServer to PacketBundles mapping + pub RoamingNetworkServerPacketBundles get(fn roaming_network_server_packet_bundles): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option>; + + // Device Session mapping + pub RoamingPacketBundleDeviceSession get(fn roaming_packet_bundle_device_sessions): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option<(T::RoamingDeviceIndex, T::RoamingSessionIndex)>; + + pub RoamingDeviceSessionPacketBundles get(fn roaming_device_session_packet_bundles): map hasher(opaque_blake2_256) (T::RoamingDeviceIndex, T::RoamingSessionIndex) => Option>; + + // IPFS + pub RoamingExternalDataStorageHashPacketBundle get(fn roaming_external_data_storage_hash_packet_bundle): map hasher(opaque_blake2_256) T::RoamingPacketBundleExternalDataStorageHash => Option>; + + /// Get roaming packet_bundle session + pub RoamingPacketBundleSession get(fn roaming_packet_bundle_session): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option; + + /// Get roaming session's packet bundles + pub RoamingSessionPacketBundles get(fn roaming_session_packet_bundles): map hasher(opaque_blake2_256) T::RoamingSessionIndex => Option> + + // /// Get roaming packet_bundle operator + // pub RoamingPacketBundleOperator get(fn roaming_packet_bundle_operator): map hasher(opaque_blake2_256) T::RoamingPacketBundleIndex => Option; + + // /// Get roaming operator's packet bundles + // pub RoamingOperatorPacketBundles get(fn roaming_operator_packet_bundles): map hasher(opaque_blake2_256) T::RoamingOperatorIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming packet_bundle + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_packet_bundle_id = Self::next_roaming_packet_bundle_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming packet_bundle + let roaming_packet_bundle = RoamingPacketBundle(unique_id); + Self::insert_roaming_packet_bundle(&sender, roaming_packet_bundle_id, roaming_packet_bundle); + + Self::deposit_event(RawEvent::Created(sender, roaming_packet_bundle_id)); + } + + /// Transfer a roaming packet_bundle to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_packet_bundle_id: T::RoamingPacketBundleIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_packet_bundle_owner(roaming_packet_bundle_id) == Some(sender.clone()), "Only owner can transfer roaming packet_bundle"); + + Self::update_owner(&to, roaming_packet_bundle_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_packet_bundle_id)); + } + + /// Set a price for a roaming packet_bundle for sale + /// None to delist the roaming packet_bundle + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_price(origin, roaming_packet_bundle_id: T::RoamingPacketBundleIndex, price: Option>) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_packet_bundle_owner(roaming_packet_bundle_id) == Some(sender.clone()), "Only owner can set price for roaming packet_bundle"); + + if let Some(ref price) = price { + >::insert(roaming_packet_bundle_id, price); + } else { + >::remove(roaming_packet_bundle_id); + } + + Self::deposit_event(RawEvent::PriceSet(sender, roaming_packet_bundle_id, price)); + } + + /// Set roaming packet_bundle receiver + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_receiver( + origin, + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex, + _packet_bundle_received_at_home: Option, + _packet_bundle_received_packets_count: Option, + _packet_bundle_received_packets_ok_count: Option, + _packet_bundle_received_started_at_block: Option, + _packet_bundle_received_ended_at_block: Option, + _packet_bundle_external_data_storage_hash: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming packet bundle id whose receiver we want to change actually exists + let is_roaming_packet_bundle = Self::exists_roaming_packet_bundle(roaming_packet_bundle_id).is_ok(); + ensure!(is_roaming_packet_bundle, "RoamingPacketBundle does not exist"); + + // Ensure that the roaming network server id that we want to associate with the packet bundle id actually exists + let is_roaming_network_server = Self::exists_roaming_network_server(roaming_network_server_id).is_ok(); + ensure!(is_roaming_network_server, "RoamingNetworkServer does not exist"); + + // Ensure that the caller is owner of the given network server id + let is_owned_by_network_server = Self::is_owned_by_network_server(roaming_network_server_id, sender.clone()).is_ok(); + ensure!(is_owned_by_network_server, "Ownership by given network server does not exist"); + + // Ensure that the caller is owner of the packet bundle receiver they are trying to change + ensure!(Self::roaming_packet_bundle_owner(roaming_packet_bundle_id) == Some(sender.clone()), "Only owner can set receiver for roaming packet_bundle"); + + let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_packet_bundle_id, sender.clone()).is_ok(); + ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + let packet_bundle_received_at_home = match _packet_bundle_received_at_home { + Some(value) => value, + None => Default::default() // Default + }; + let packet_bundle_received_packets_count = match _packet_bundle_received_packets_count { + Some(value) => value, + None => Default::default() + }; + let packet_bundle_received_packets_ok_count = match _packet_bundle_received_packets_ok_count { + Some(value) => value, + None => Default::default() + }; + let packet_bundle_received_started_at_block = match _packet_bundle_received_started_at_block { + Some(value) => value, + None => Default::default() + }; + let packet_bundle_received_ended_at_block = match _packet_bundle_received_ended_at_block { + Some(value) => value, + None => Default::default() + }; + let packet_bundle_external_data_storage_hash = match _packet_bundle_external_data_storage_hash { + Some(value) => value, + None => Default::default() + }; + + // Check if a roaming packet bundle receiver already exists with the given roaming packet bundle id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_packet_bundle_receiver_index(roaming_packet_bundle_id, roaming_network_server_id).is_ok() { + info!("Mutating values"); + >::mutate((roaming_packet_bundle_id, roaming_network_server_id), |packet_bundle_receiver| { + if let Some(_packet_bundle_receiver) = packet_bundle_receiver { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _packet_bundle_receiver.packet_bundle_received_at_home = packet_bundle_received_at_home.clone(); + _packet_bundle_receiver.packet_bundle_received_packets_count = packet_bundle_received_packets_count.clone(); + _packet_bundle_receiver.packet_bundle_received_packets_ok_count = packet_bundle_received_packets_ok_count.clone(); + _packet_bundle_receiver.packet_bundle_received_started_at_block = packet_bundle_received_started_at_block.clone(); + _packet_bundle_receiver.packet_bundle_received_ended_at_block = packet_bundle_received_ended_at_block.clone(); + _packet_bundle_receiver.packet_bundle_external_data_storage_hash = packet_bundle_external_data_storage_hash.clone(); + } + }); + info!("Checking mutated values"); + let fetched_packet_bundle_receiver = >::get((roaming_packet_bundle_id, roaming_network_server_id)); + if let Some(_packet_bundle_receiver) = fetched_packet_bundle_receiver { + info!("Latest field packet_bundle_received_at_home {:#?}", _packet_bundle_receiver.packet_bundle_received_at_home); + info!("Latest field packet_bundle_received_packets_count {:#?}", _packet_bundle_receiver.packet_bundle_received_packets_count); + info!("Latest field packet_bundle_received_packets_ok_count {:#?}", _packet_bundle_receiver.packet_bundle_received_packets_ok_count); + info!("Latest field packet_bundle_received_started_at_block {:#?}", _packet_bundle_receiver.packet_bundle_received_started_at_block); + info!("Latest field packet_bundle_received_ended_at_block {:#?}", _packet_bundle_receiver.packet_bundle_received_ended_at_block); + info!("Latest field packet_bundle_external_data_storage_hash {:#?}", _packet_bundle_receiver.packet_bundle_external_data_storage_hash); + } + } else { + info!("Inserting values"); + + // Create a new roaming packet_bundle receiver instance with the input params + let roaming_packet_bundle_receiver_instance = RoamingPacketBundleReceiver { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + packet_bundle_received_at_home: packet_bundle_received_at_home.clone(), + packet_bundle_received_packets_count: packet_bundle_received_packets_count.clone(), + packet_bundle_received_packets_ok_count: packet_bundle_received_packets_ok_count.clone(), + packet_bundle_received_started_at_block: packet_bundle_received_started_at_block.clone(), + packet_bundle_received_ended_at_block: packet_bundle_received_ended_at_block.clone(), + packet_bundle_external_data_storage_hash: packet_bundle_external_data_storage_hash.clone() + }; + + >::insert( + (roaming_packet_bundle_id, roaming_network_server_id), + &roaming_packet_bundle_receiver_instance + ); + + info!("Checking inserted values"); + let fetched_packet_bundle_receiver = >::get((roaming_packet_bundle_id, roaming_network_server_id)); + if let Some(_packet_bundle_receiver) = fetched_packet_bundle_receiver { + info!("Inserted field packet_bundle_received_at_home {:#?}", _packet_bundle_receiver.packet_bundle_received_at_home); + info!("Inserted field packet_bundle_received_packets_count {:#?}", _packet_bundle_receiver.packet_bundle_received_packets_count); + info!("Inserted field packet_bundle_received_packets_ok_count {:#?}", _packet_bundle_receiver.packet_bundle_received_packets_ok_count); + info!("Inserted field packet_bundle_received_started_at_block {:#?}", _packet_bundle_receiver.packet_bundle_received_started_at_block); + info!("Inserted field packet_bundle_received_ended_at_block {:#?}", _packet_bundle_receiver.packet_bundle_received_ended_at_block); + info!("Inserted field packet_bundle_external_data_storage_hash {:#?}", _packet_bundle_receiver.packet_bundle_external_data_storage_hash); + } + } + + Self::deposit_event(RawEvent::RoamingPacketBundleReceiverSet( + sender, + roaming_packet_bundle_id, + roaming_network_server_id, + packet_bundle_received_at_home, + packet_bundle_received_packets_count, + packet_bundle_received_packets_ok_count, + packet_bundle_received_started_at_block, + packet_bundle_received_ended_at_block, + packet_bundle_external_data_storage_hash + )); + } + + /// Buy a roaming packet_bundle with max price willing to pay + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn buy(origin, roaming_packet_bundle_id: T::RoamingPacketBundleIndex, price: BalanceOf) { + let sender = ensure_signed(origin)?; + + let owner = Self::roaming_packet_bundle_owner(roaming_packet_bundle_id); + ensure!(owner.is_some(), "RoamingPacketBundle owner does not exist"); + let owner = owner.unwrap(); + + let roaming_packet_bundle_price = Self::roaming_packet_bundle_price(roaming_packet_bundle_id); + ensure!(roaming_packet_bundle_price.is_some(), "RoamingPacketBundle not for sale"); + + let roaming_packet_bundle_price = roaming_packet_bundle_price.unwrap(); + ensure!(price >= roaming_packet_bundle_price, "Price is too low"); + + T::Currency::transfer(&sender, &owner, roaming_packet_bundle_price, ExistenceRequirement::AllowDeath)?; + + >::remove(roaming_packet_bundle_id); + + Self::update_owner(&sender, roaming_packet_bundle_id); + + Self::deposit_event(RawEvent::Sold(owner, sender, roaming_packet_bundle_id, roaming_packet_bundle_price)); + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_packet_bundle_to_session( + origin, + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + roaming_session_id: T::RoamingSessionIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given session id already exists + let is_roaming_session = > + ::exists_roaming_session(roaming_session_id).is_ok(); + ensure!(is_roaming_session, "RoamingSession does not exist"); + + // Ensure that caller of the function is the owner of the session id to assign the packet_bundle to + ensure!( + >::is_roaming_session_owner(roaming_session_id, sender.clone()).is_ok(), + "Only the roaming session owner can assign itself a roaming packet bundle" + ); + + Self::associate_packet_bundle_with_session(roaming_packet_bundle_id, roaming_session_id) + .expect("Unable to associate packet bundle with session"); + + // Ensure that the given packet_bundle id already exists + let roaming_packet_bundle = Self::roaming_packet_bundle(roaming_packet_bundle_id); + ensure!(roaming_packet_bundle.is_some(), "Invalid roaming_packet_bundle_id"); + + // Ensure that the packet_bundle is not already owned by a different session + // Unassign the packet_bundle from any existing session since it may only be owned by one session + >::remove(roaming_packet_bundle_id); + + // Assign the packet_bundle owner to the given session (even if already belongs to them) + >::insert(roaming_packet_bundle_id, roaming_session_id); + + Self::deposit_event(RawEvent::AssignedPacketBundleToSession(sender, roaming_packet_bundle_id, roaming_session_id)); + } + + // pub fn assign_packet_bundle_to_operator( + // origin, + // roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + // roaming_operator_id: T::RoamingOperatorIndex + // ) { + // let sender = ensure_signed(origin)?; + + // // Ensure that the given session id already exists + // let is_roaming_operator = > + // ::exists_roaming_operator(roaming_operator_id).is_ok(); + // ensure!(is_roaming_operator, "RoamingOperator does not exist"); + + // // Ensure that caller of the function is the owner of the operator id to assign the packet_bundle to + // ensure!( + // >::is_roaming_operator_owner(roaming_operator_id, sender.clone()).is_ok(), + // "Only the roaming operator owner can assign itself a roaming packet bundle" + // ); + + // Self::associate_packet_bundle_with_operator(roaming_packet_bundle_id, roaming_operator_id) + // .expect("Unable to associate packet bundle with operator"); + + // // Ensure that the given packet_bundle id already exists + // let roaming_packet_bundle = Self::roaming_packet_bundle(roaming_packet_bundle_id); + // ensure!(roaming_packet_bundle.is_some(), "Invalid roaming_packet_bundle_id"); + + // // Ensure that the packet_bundle is not already owned by a different operator + // // Unassign the packet_bundle from any existing operator since it may only be owned by one operator + // >::remove(roaming_packet_bundle_id); + + // // Assign the packet_bundle owner to the given operator (even if already belongs to them) + // >::insert(roaming_packet_bundle_id, roaming_operator_id); + + // Self::deposit_event(RawEvent::AssignedPacketBundleToOperator(sender, roaming_packet_bundle_id, roaming_operator_id)); + // } + } +} + +impl Module { + pub fn is_roaming_packet_bundle_owner( + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_packet_bundle_owner(&roaming_packet_bundle_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of RoamingPacketBundle" + ); + Ok(()) + } + + pub fn is_owned_by_required_parent_relationship( + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + info!("Get the packet bundle session id associated with the session of the given packet bundle id"); + let packet_bundle_session_id = Self::roaming_packet_bundle_session(roaming_packet_bundle_id); + + if let Some(_packet_bundle_session_id) = packet_bundle_session_id { + // Ensure that the caller is owner of the session id associated with the packet bundle + ensure!( + (>::is_roaming_session_owner( + _packet_bundle_session_id.clone(), + sender.clone() + )) + .is_ok(), + "Only owner of the session id associated with the given packet bundle can set an associated roaming \ + packet bundle receiver" + ); + } else { + // There must be a packet bundle session id associated with the packet bundle + return Err(DispatchError::Other("RoamingPacketBundleSession does not exist")); + } + Ok(()) + } + + pub fn exists_roaming_packet_bundle( + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + ) -> Result { + match Self::roaming_packet_bundle(roaming_packet_bundle_id) { + Some(value) => Ok(value), + None => Err(DispatchError::Other("RoamingPacketBundle does not exist")), + } + } + + pub fn exists_roaming_packet_bundle_receiver( + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_packet_bundle_receivers((roaming_packet_bundle_id, roaming_network_server_id)) { + Some(_) => Ok(()), + None => Err(DispatchError::Other("RoamingPacketBundleReceiver does not exist")), + } + } + + pub fn exists_roaming_network_server( + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result<(), DispatchError> { + info!("Ensuring that the caller has provided a network server id that actually exists"); + match >::exists_roaming_network_server(roaming_network_server_id) { + Ok(_) => Ok(()), + Err(_e) => Err(DispatchError::Other("RoamingNetworkServer does not exist")), + } + } + + pub fn is_owned_by_network_server( + roaming_network_server_id: T::RoamingNetworkServerIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + info!( + "Ensuring that the caller is owner of the given network server id associated with the given packet bundle \ + id" + ); + match >::is_roaming_network_server_owner(roaming_network_server_id, sender) { + Ok(_) => Ok(()), + Err(_e) => { + Err(DispatchError::Other( + "Only owner of the given network server id associated with the given packet bundle id can set it \ + as an associated roaming packet bundle receiver", + )) + } + } + } + + pub fn has_value_for_packet_bundle_receiver_index( + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result<(), DispatchError> { + info!("Checking if packet bundle receiver has a value that is defined"); + let fetched_packet_bundle_receiver = + >::get((roaming_packet_bundle_id, roaming_network_server_id)); + if let Some(_) = fetched_packet_bundle_receiver { + info!("Found value for packet bundle receiver"); + return Ok(()); + } + warn!("No value for packet bundle receiver"); + Err(DispatchError::Other("No value for packet bundle receiver")) + } + + /// Only push the packet bundle id onto the end of the vector if it does not already exist + pub fn associate_packet_bundle_with_session( + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + roaming_session_id: T::RoamingSessionIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given session id already exists as a key, + // and where its corresponding value is a vector that already contains the given packet bundle id + if let Some(session_packet_bundles) = Self::roaming_session_packet_bundles(roaming_session_id) { + info!("Session id key {:?} exists with value {:?}", roaming_session_id, session_packet_bundles); + let not_session_contains_packet_bundle = !session_packet_bundles.contains(&roaming_packet_bundle_id); + ensure!(not_session_contains_packet_bundle, "Session already contains the given packet bundle id"); + info!("Session id key exists but its vector value does not contain the given packet bundle id"); + >::mutate(roaming_session_id, |v| { + if let Some(value) = v { + value.push(roaming_packet_bundle_id); + } + }); + info!( + "Associated packet bundle {:?} with session {:?}", + roaming_packet_bundle_id, + roaming_session_id + ); + Ok(()) + } else { + info!( + "Session id key does not yet exist. Creating the session key {:?} and appending the packet bundle id \ + {:?} to its vector value", + roaming_session_id, + roaming_packet_bundle_id + ); + >::insert(roaming_session_id, &vec![roaming_packet_bundle_id]); + Ok(()) + } + } + + // /// Only push the packet bundle id onto the end of the vector if it does not already exist + // pub fn associate_packet_bundle_with_operator( + // roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + // roaming_operator_id: T::RoamingOperatorIndex + // ) -> Result<(), DispatchError> + // { + // // Early exit with error since do not want to append if the given operator id already exists as a key, + // // and where its corresponding value is a vector that already contains the given packet bundle id + // if let Some(operator_packet_bundles) = Self::roaming_operator_packet_bundles(roaming_operator_id) { + // info!("Operator id key {:?} exists with value {:?}", roaming_operator_id, + // operator_packet_bundles); let not_operator_contains_packet_bundle = + // !operator_packet_bundles.contains(&roaming_packet_bundle_id); ensure! + // (not_operator_contains_packet_bundle, "Operator already contains the given packet bundle id"); debug: + // :info!("Operator id key exists but its vector value does not contain the given packet bundle id"); + // >::mutate(roaming_operator_id, |v| { + // if let Some(value) = v { + // value.push(roaming_packet_bundle_id); + // } + // }); + // info!("Associated packet bundle {:?} with operator {:?}", roaming_packet_bundle_id, + // roaming_operator_id); Ok(()) + // } else { + // info!("Operator id key does not yet exist. Creating the operator key {:?} and appending the packet + // bundle id {:?} to its vector value", roaming_operator_id, roaming_packet_bundle_id); + // >::insert(roaming_operator_id, &vec![roaming_packet_bundle_id]); + // Ok(()) + // } + // } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_packet_bundle_id() -> Result { + let roaming_packet_bundle_id = Self::roaming_packet_bundles_count(); + if roaming_packet_bundle_id == ::max_value() { + return Err(DispatchError::Other("RoamingPacketBundles count overflow")); + } + Ok(roaming_packet_bundle_id) + } + + fn insert_roaming_packet_bundle( + owner: &T::AccountId, + roaming_packet_bundle_id: T::RoamingPacketBundleIndex, + roaming_packet_bundle: RoamingPacketBundle, + ) { + // Create and store roaming packet_bundle + >::insert(roaming_packet_bundle_id, roaming_packet_bundle); + >::put(roaming_packet_bundle_id + One::one()); + >::insert(roaming_packet_bundle_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_packet_bundle_id: T::RoamingPacketBundleIndex) { + >::insert(roaming_packet_bundle_id, to); + } +} diff --git a/pallets/roaming/roaming-packet-bundles/src/mock.rs b/pallets/roaming/roaming-packet-bundles/src/mock.rs new file mode 100644 index 00000000..3c5ba99e --- /dev/null +++ b/pallets/roaming/roaming-packet-bundles/src/mock.rs @@ -0,0 +1,146 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl roaming_organizations::Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} +impl roaming_devices::Config for Test { + type Event = (); + type RoamingDeviceIndex = u64; +} +impl roaming_sessions::Config for Test { + type Event = (); + type RoamingSessionIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingPacketBundleExternalDataStorageHash = H256; + type RoamingPacketBundleIndex = u64; + type RoamingPacketBundleReceivedAtHome = bool; + type RoamingPacketBundleReceivedPacketsCount = u64; + type RoamingPacketBundleReceivedPacketsOkCount = u64; +} + +pub type RoamingPacketBundleModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-packet-bundles/src/tests.rs b/pallets/roaming/roaming-packet-bundles/src/tests.rs new file mode 100644 index 00000000..559ab1fd --- /dev/null +++ b/pallets/roaming/roaming-packet-bundles/src/tests.rs @@ -0,0 +1,119 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), 0); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_none()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), None); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingPacketBundleModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), 1); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_some()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), Some(1)); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), None); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingPacketBundleModule::create(Origin::signed(1)), "RoamingPacketBundles count overflow"); + // Verify Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), u64::max_value()); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_none()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), None); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingPacketBundleModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingPacketBundleModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), 1); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_some()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), Some(2)); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), None); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingPacketBundleModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingPacketBundleModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming packet_bundle" + ); + assert_noop!( + RoamingPacketBundleModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming packet_bundle" + ); + // Verify Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), 1); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_some()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), Some(1)); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), None); + }); +} + +#[test] +fn set_price_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingPacketBundleModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingPacketBundleModule::set_price(Origin::signed(1), 0, Some(10))); + // Verify Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), 1); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_some()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), Some(1)); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), Some(10)); + }); +} + +#[test] +fn buy_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingPacketBundleModule::create(Origin::signed(1))); + assert_ok!(RoamingPacketBundleModule::set_price(Origin::signed(1), 0, Some(10))); + // Call Functions + assert_ok!(RoamingPacketBundleModule::buy(Origin::signed(2), 0, 10)); + // Verify Storage + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundles_count(), 1); + assert!(RoamingPacketBundleModule::roaming_packet_bundle(0).is_some()); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_owner(0), Some(2)); + assert_eq!(RoamingPacketBundleModule::roaming_packet_bundle_price(0), None); + assert_eq!(Balances::free_balance(1), 20); + assert_eq!(Balances::free_balance(2), 10); + }); +} diff --git a/pallets/roaming/roaming-routing-profiles/Cargo.toml b/pallets/roaming/roaming-routing-profiles/Cargo.toml new file mode 100644 index 00000000..c2b7322b --- /dev/null +++ b/pallets/roaming/roaming-routing-profiles/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = 'roaming-routing-profiles' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-devices/std', + 'roaming-organizations/std', + 'roaming-network-servers/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-devices = { default-features = false, package = 'roaming-devices', path = '../roaming-devices' } +roaming-organizations = { default-features = false, package = 'roaming-organizations', path = '../roaming-organizations' } +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-routing-profiles/src/benchmarking.rs b/pallets/roaming/roaming-routing-profiles/src/benchmarking.rs new file mode 100644 index 00000000..77f5ef88 --- /dev/null +++ b/pallets/roaming/roaming-routing-profiles/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingRoutingProfiles; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingRoutingProfiles, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-routing-profiles/src/lib.rs b/pallets/roaming/roaming-routing-profiles/src/lib.rs new file mode 100644 index 00000000..0a2f23fd --- /dev/null +++ b/pallets/roaming/roaming-routing-profiles/src/lib.rs @@ -0,0 +1,286 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec +#[macro_use] +extern crate alloc; // Required to use Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_devices::Config { + type Event: From> + Into<::Event>; + type RoamingRoutingProfileIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingRoutingProfileAppServer: Parameter + Member + Default; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingRoutingProfile(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingRoutingProfileIndex, + ::RoamingRoutingProfileAppServer, + ::RoamingDeviceIndex, + { + /// A roaming routing_profile is created. (owner, roaming_routing_profile_id) + Created(AccountId, RoamingRoutingProfileIndex), + /// A roaming routing_profile is transferred. (from, to, roaming_routing_profile_id) + Transferred(AccountId, AccountId, RoamingRoutingProfileIndex), + /// A roaming routing_profile is assigned an app server. (owner, roaming_routing_profile_id, app server) + AppServerSet(AccountId, RoamingRoutingProfileIndex, Option), + /// A roaming routing_profile is assigned to a device. (owner of device, roaming_routing_profile_id, roaming_device_id) + AssignedRoutingProfileToDevice(AccountId, RoamingRoutingProfileIndex, RoamingDeviceIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingRoutingProfiles { + /// Stores all the roaming routing_profiles, key is the roaming routing_profile id / index + pub RoamingRoutingProfiles get(fn roaming_routing_profile): map hasher(opaque_blake2_256) T::RoamingRoutingProfileIndex => Option; + + /// Stores the total number of roaming routing_profiles. i.e. the next roaming routing_profile index + pub RoamingRoutingProfilesCount get(fn roaming_routing_profiles_count): T::RoamingRoutingProfileIndex; + + /// Get roaming routing_profile owner + pub RoamingRoutingProfileOwners get(fn roaming_routing_profile_owner): map hasher(opaque_blake2_256) T::RoamingRoutingProfileIndex => Option; + + /// Get roaming routing_profile app server. + pub RoamingRoutingProfileAppServers get(fn roaming_routing_profile_app_server): map hasher(opaque_blake2_256) T::RoamingRoutingProfileIndex => Option; + + /// Get roaming routing_profile device + pub RoamingRoutingProfileDevices get(fn roaming_routing_profile_device): map hasher(opaque_blake2_256) T::RoamingRoutingProfileIndex => Option; + + /// Get roaming device routing_profiles + pub RoamingDeviceRoutingProfiles get(fn roaming_device_routing_profiles): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming routing_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_routing_profile_id = Self::next_roaming_routing_profile_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming routing_profile + let roaming_routing_profile = RoamingRoutingProfile(unique_id); + Self::insert_roaming_routing_profile(&sender, roaming_routing_profile_id, roaming_routing_profile); + + Self::deposit_event(RawEvent::Created(sender, roaming_routing_profile_id)); + } + + /// Transfer a roaming routing_profile to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_routing_profile_id: T::RoamingRoutingProfileIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_routing_profile_owner(roaming_routing_profile_id) == Some(sender.clone()), "Only owner can transfer roaming routing_profile"); + + Self::update_owner(&to, roaming_routing_profile_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_routing_profile_id)); + } + + /// Set app server for a roaming routing_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_app_server(origin, roaming_routing_profile_id: T::RoamingRoutingProfileIndex, app_server: Option) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_routing_profile_owner(roaming_routing_profile_id) == Some(sender.clone()), "Only owner can set app server for roaming routing_profile"); + + // let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_routing_profile_id, sender.clone()).is_ok(); + // ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + if let Some(ref app_server) = app_server { + >::insert(roaming_routing_profile_id, app_server); + } else { + >::remove(roaming_routing_profile_id); + } + + Self::deposit_event(RawEvent::AppServerSet(sender, roaming_routing_profile_id, app_server)); + } + + // Note: This is wrong, routing profile shouldn't be assigned to a device. + // Instead it should be "optionally" be assigned to a network server, which is the "home" network server + // of one or more devices. But we associated the routing profile with a network server when + // we create a network (roaming base) profile. + // pub fn assign_routing_profile_to_device( + // origin, + // roaming_routing_profile_id: T::RoamingRoutingProfileIndex, + // roaming_device_id: T::RoamingDeviceIndex + // ) { + // let sender = ensure_signed(origin)?; + + // // Ensure that the given device id already exists + // let is_roaming_device = > + // ::exists_roaming_device(roaming_device_id).is_ok(); + // ensure!(is_roaming_device, "RoamingDevice does not exist"); + + // // Ensure that caller of the function is the owner of the device id to assign the routing_profile to + // ensure!( + // >::is_roaming_device_owner(roaming_device_id, sender.clone()).is_ok(), + // "Only the roaming device owner can assign itself a roaming routing_profile" + // ); + + // Self::associate_routing_profile_with_device(roaming_routing_profile_id, roaming_device_id) + // .expect("Unable to associate routing_profile with device"); + + // // Ensure that the given routing_profile id already exists + // let roaming_routing_profile = Self::roaming_routing_profile(roaming_routing_profile_id); + // ensure!(roaming_routing_profile.is_some(), "Invalid roaming_routing_profile_id"); + + // // Ensure that the routing_profile is not already owned by a different device + // // Unassign the routing_profile from any existing device since it may only be owned by one device + // >::remove(roaming_routing_profile_id); + + // // Assign the routing_profile owner to the given device (even if already belongs to them) + // >::insert(roaming_routing_profile_id, roaming_device_id); + + // Self::deposit_event(RawEvent::AssignedRoutingProfileToDevice(sender, roaming_routing_profile_id, roaming_device_id)); + // } + } +} + +impl Module { + pub fn exists_roaming_routing_profile( + roaming_routing_profile_id: T::RoamingRoutingProfileIndex, + ) -> Result { + match Self::roaming_routing_profile(roaming_routing_profile_id) { + Some(roaming_routing_profile) => Ok(roaming_routing_profile), + None => Err(DispatchError::Other("RoamingRoutingProfile does not exist")), + } + } + + // pub fn is_owned_by_required_parent_relationship(roaming_routing_profile_id: T::RoamingRoutingProfileIndex, + // sender: T::AccountId) -> Result<(), DispatchError> { info!("Get the device id associated with the + // device of the given routing profile id"); let routing_profile_device_id = + // Self::roaming_routing_profile_device(roaming_routing_profile_id); + + // if let Some(_routing_profile_device_id) = routing_profile_device_id { + // // Ensure that the caller is owner of the device id associated with the routing profile + // ensure!((>::is_roaming_device_owner( + // _routing_profile_device_id.clone(), + // sender.clone() + // )).is_ok(), "Only owner of the device id associated with the given routing profile can set an + // associated roaming routing profile config" ); + // } else { + // // There must be a device id associated with the routing profile + // return Err(DispatchError::Other("RoamingRoutingProfileDevice does not exist")); + // } + // Ok(()) + // } + + /// Only push the routing_profile id onto the end of the vector if it does not already exist + pub fn associate_routing_profile_with_device( + roaming_routing_profile_id: T::RoamingRoutingProfileIndex, + roaming_device_id: T::RoamingDeviceIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given device id already exists as a key, + // and where its corresponding value is a vector that already contains the given routing_profile id + if let Some(device_routing_profiles) = Self::roaming_device_routing_profiles(roaming_device_id) { + info!("Device id key {:?} exists with value {:?}", roaming_device_id, device_routing_profiles); + let not_device_contains_routing_profile = !device_routing_profiles.contains(&roaming_routing_profile_id); + ensure!(not_device_contains_routing_profile, "Device already contains the given routing_profile id"); + info!("Device id key exists but its vector value does not contain the given routing_profile id"); + >::mutate(roaming_device_id, |v| { + if let Some(value) = v { + value.push(roaming_routing_profile_id); + } + }); + info!( + "Associated routing_profile {:?} with device {:?}", + roaming_routing_profile_id, + roaming_device_id + ); + Ok(()) + } else { + info!( + "Device id key does not yet exist. Creating the device key {:?} and appending the routing_profile id \ + {:?} to its vector value", + roaming_device_id, + roaming_routing_profile_id + ); + >::insert(roaming_device_id, &vec![roaming_routing_profile_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_routing_profile_id() -> Result { + let roaming_routing_profile_id = Self::roaming_routing_profiles_count(); + if roaming_routing_profile_id == ::max_value() { + return Err(DispatchError::Other("RoamingRoutingProfiles count overflow")); + } + Ok(roaming_routing_profile_id) + } + + fn insert_roaming_routing_profile( + owner: &T::AccountId, + roaming_routing_profile_id: T::RoamingRoutingProfileIndex, + roaming_routing_profile: RoamingRoutingProfile, + ) { + // Create and store roaming routing_profile + >::insert(roaming_routing_profile_id, roaming_routing_profile); + >::put(roaming_routing_profile_id + One::one()); + >::insert(roaming_routing_profile_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_routing_profile_id: T::RoamingRoutingProfileIndex) { + >::insert(roaming_routing_profile_id, to); + } +} diff --git a/pallets/roaming/roaming-routing-profiles/src/mock.rs b/pallets/roaming/roaming-routing-profiles/src/mock.rs new file mode 100644 index 00000000..d97366a1 --- /dev/null +++ b/pallets/roaming/roaming-routing-profiles/src/mock.rs @@ -0,0 +1,139 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl roaming_organizations::Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} +impl roaming_devices::Config for Test { + type Event = (); + type RoamingDeviceIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingRoutingProfileAppServer = Vec; + type RoamingRoutingProfileIndex = u64; +} + +pub type RoamingRoutingProfileModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-routing-profiles/src/tests.rs b/pallets/roaming/roaming-routing-profiles/src/tests.rs new file mode 100644 index 00000000..19d38414 --- /dev/null +++ b/pallets/roaming/roaming-routing-profiles/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profiles_count(), 0); + assert!(RoamingRoutingProfileModule::roaming_routing_profile(0).is_none()); + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profile_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingRoutingProfileModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profiles_count(), 1); + assert!(RoamingRoutingProfileModule::roaming_routing_profile(0).is_some()); + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profile_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingRoutingProfileModule::create(Origin::signed(1)), "RoamingRoutingProfiles count overflow"); + // Verify Storage + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profiles_count(), u64::max_value()); + assert!(RoamingRoutingProfileModule::roaming_routing_profile(0).is_none()); + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profile_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingRoutingProfileModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingRoutingProfileModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profiles_count(), 1); + assert!(RoamingRoutingProfileModule::roaming_routing_profile(0).is_some()); + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profile_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingRoutingProfileModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingRoutingProfileModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming routing_profile" + ); + assert_noop!( + RoamingRoutingProfileModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming routing_profile" + ); + // Verify Storage + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profiles_count(), 1); + assert!(RoamingRoutingProfileModule::roaming_routing_profile(0).is_some()); + assert_eq!(RoamingRoutingProfileModule::roaming_routing_profile_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-service-profiles/Cargo.toml b/pallets/roaming/roaming-service-profiles/Cargo.toml new file mode 100644 index 00000000..78ec2814 --- /dev/null +++ b/pallets/roaming/roaming-service-profiles/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = 'roaming-service-profiles' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-network-servers/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-service-profiles/src/benchmarking.rs b/pallets/roaming/roaming-service-profiles/src/benchmarking.rs new file mode 100644 index 00000000..5812b438 --- /dev/null +++ b/pallets/roaming/roaming-service-profiles/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingServiceProfiles; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingServiceProfiles, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-service-profiles/src/lib.rs b/pallets/roaming/roaming-service-profiles/src/lib.rs new file mode 100644 index 00000000..50bcf1d6 --- /dev/null +++ b/pallets/roaming/roaming-service-profiles/src/lib.rs @@ -0,0 +1,324 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: frame_system::Config + roaming_operators::Config + roaming_network_servers::Config { + type Event: From> + Into<::Event>; + type RoamingServiceProfileIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingServiceProfileUplinkRate: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; + type RoamingServiceProfileDownlinkRate: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingServiceProfile(pub [u8; 16]); + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingServiceProfileIndex, + ::RoamingServiceProfileUplinkRate, + ::RoamingServiceProfileDownlinkRate, + ::RoamingNetworkServerIndex, + { + /// A roaming service_profile is created. (owner, roaming_service_profile_id) + Created(AccountId, RoamingServiceProfileIndex), + /// A roaming service_profile is transferred. (from, to, roaming_service_profile_id) + Transferred(AccountId, AccountId, RoamingServiceProfileIndex), + /// A roaming service_profile is assigned an uplink rate. (owner, roaming_service_profile_id, uplink rate) + UplinkRateSet(AccountId, RoamingServiceProfileIndex, Option), + /// A roaming service_profile is assigned an downlink rate. (owner, roaming_service_profile_id, downlink rate) + DownlinkRateSet(AccountId, RoamingServiceProfileIndex, Option), + /// A roaming service_profile is assigned to a network_server. (owner of network_server, roaming_service_profile_id, roaming_network_server_id) + AssignedServiceProfileToNetworkServer(AccountId, RoamingServiceProfileIndex, RoamingNetworkServerIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingServiceProfiles { + /// Stores all the roaming service_profiles, key is the roaming service_profile id / index + pub RoamingServiceProfiles get(fn roaming_service_profile): map hasher(opaque_blake2_256) T::RoamingServiceProfileIndex => Option; + + /// Stores the total number of roaming service_profiles. i.e. the next roaming service_profile index + pub RoamingServiceProfilesCount get(fn roaming_service_profiles_count): T::RoamingServiceProfileIndex; + + /// Get roaming service_profile owner + pub RoamingServiceProfileOwners get(fn roaming_service_profile_owner): map hasher(opaque_blake2_256) T::RoamingServiceProfileIndex => Option; + + /// Get roaming service_profile uplink rate. + pub RoamingServiceProfileUplinkRates get(fn roaming_service_profile_uplink_rate): map hasher(opaque_blake2_256) T::RoamingServiceProfileIndex => Option; + + /// Get roaming service_profile downlink rate. + pub RoamingServiceProfileDownlinkRates get(fn roaming_service_profile_downlink_rate): map hasher(opaque_blake2_256) T::RoamingServiceProfileIndex => Option; + + /// Get roaming service_profile network_server + pub RoamingServiceProfileNetworkServer get(fn roaming_service_profile_network_server): map hasher(opaque_blake2_256) T::RoamingServiceProfileIndex => Option; + + /// Get roaming network_server service_profiles + pub RoamingNetworkServerServiceProfiles get(fn roaming_network_server_service_profiles): map hasher(opaque_blake2_256) T::RoamingNetworkServerIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming service_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_service_profile_id = Self::next_roaming_service_profile_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming service_profile + let roaming_service_profile = RoamingServiceProfile(unique_id); + Self::insert_roaming_service_profile(&sender, roaming_service_profile_id, roaming_service_profile); + + Self::deposit_event(RawEvent::Created(sender, roaming_service_profile_id)); + } + + /// Transfer a roaming service_profile to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_service_profile_id: T::RoamingServiceProfileIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_service_profile_owner(roaming_service_profile_id) == Some(sender.clone()), "Only owner can transfer roaming service_profile"); + + Self::update_owner(&to, roaming_service_profile_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_service_profile_id)); + } + + /// Set uplink_rate for a roaming service_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_uplink_rate(origin, roaming_service_profile_id: T::RoamingServiceProfileIndex, uplink_rate: Option) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_service_profile_owner(roaming_service_profile_id) == Some(sender.clone()), "Only owner can set uplink_rate for roaming service_profile"); + + // let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_service_profile_id, sender.clone()).is_ok(); + // ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + if let Some(ref uplink_rate) = uplink_rate { + >::insert(roaming_service_profile_id, uplink_rate); + } else { + >::remove(roaming_service_profile_id); + } + + Self::deposit_event(RawEvent::UplinkRateSet(sender, roaming_service_profile_id, uplink_rate)); + } + + /// Set downlink_rate for a roaming service_profile + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_downlink_rate(origin, roaming_service_profile_id: T::RoamingServiceProfileIndex, downlink_rate: Option) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_service_profile_owner(roaming_service_profile_id) == Some(sender.clone()), "Only owner can set downlink_rate for roaming service_profile"); + + // let is_owned_by_parent_relationship = Self::is_owned_by_required_parent_relationship(roaming_service_profile_id, sender.clone()).is_ok(); + // ensure!(is_owned_by_parent_relationship, "Ownership by parent does not exist"); + + if let Some(ref downlink_rate) = downlink_rate { + >::insert(roaming_service_profile_id, downlink_rate); + } else { + >::remove(roaming_service_profile_id); + } + + Self::deposit_event(RawEvent::DownlinkRateSet(sender, roaming_service_profile_id, downlink_rate)); + } + + // Optional: Service Profile is assigned to Network (Roaming Base) Profile, which is associated with a network. + // This is an override to associate it with a specific Network Server rather than entire networks. + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_service_profile_to_network_server( + origin, + roaming_service_profile_id: T::RoamingServiceProfileIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given network_server id already exists + let is_roaming_network_server = > + ::exists_roaming_network_server(roaming_network_server_id).is_ok(); + ensure!(is_roaming_network_server, "RoamingNetworkServer does not exist"); + + // Ensure that caller of the function is the owner of the network_server id to assign the service_profile to + ensure!( + >::is_roaming_network_server_owner(roaming_network_server_id, sender.clone()).is_ok(), + "Only the roaming network_server owner can assign itself a roaming service_profile" + ); + + Self::associate_service_profile_with_network_server(roaming_service_profile_id, roaming_network_server_id) + .expect("Unable to associate service_profile with network_server"); + + // Ensure that the given service_profile id already exists + let roaming_service_profile = Self::roaming_service_profile(roaming_service_profile_id); + ensure!(roaming_service_profile.is_some(), "Invalid roaming_service_profile_id"); + + // Ensure that the service_profile is not already owned by a different network_server + // Unassign the service_profile from any existing network_server since it may only be owned by one network_server + >::remove(roaming_service_profile_id); + + // Assign the service_profile owner to the given network_server (even if already belongs to them) + >::insert(roaming_service_profile_id, roaming_network_server_id); + + Self::deposit_event(RawEvent::AssignedServiceProfileToNetworkServer(sender, roaming_service_profile_id, roaming_network_server_id)); + } + } +} + +impl Module { + pub fn exists_roaming_service_profile( + roaming_service_profile_id: T::RoamingServiceProfileIndex, + ) -> Result { + match Self::roaming_service_profile(roaming_service_profile_id) { + Some(roaming_service_profile) => Ok(roaming_service_profile), + None => Err(DispatchError::Other("RoamingServiceProfile does not exist")), + } + } + + // pub fn is_owned_by_required_parent_relationship(roaming_service_profile_id: T::RoamingServiceProfileIndex, + // sender: T::AccountId) -> Result<(), DispatchError> { info!("Get the network_server id associated + // with the network_server of the given service profile id"); let service_profile_network_server_id = + // Self::roaming_service_profile_network_server(roaming_service_profile_id); + + // if let Some(_service_profile_network_server_id) = service_profile_network_server_id { + // // Ensure that the caller is owner of the network_server id associated with the service profile + // ensure!((>::is_roaming_network_server_owner( + // _service_profile_network_server_id.clone(), + // sender.clone() + // )).is_ok(), "Only owner of the network_server id associated with the given service profile can set an + // associated roaming service profile config" ); + // } else { + // // There must be a network_server id associated with the service profile + // return Err(DispatchError::Other("RoamingServiceProfileNetworkServer does not exist")); + // } + // Ok(()) + // } + + /// Only push the service_profile id onto the end of the vector if it does not already exist + pub fn associate_service_profile_with_network_server( + roaming_service_profile_id: T::RoamingServiceProfileIndex, + roaming_network_server_id: T::RoamingNetworkServerIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given network_server id already exists as a key, + // and where its corresponding value is a vector that already contains the given service_profile id + if let Some(network_server_service_profiles) = + Self::roaming_network_server_service_profiles(roaming_network_server_id) + { + info!( + "NetworkServer id key {:?} exists with value {:?}", + roaming_network_server_id, + network_server_service_profiles + ); + let not_network_server_contains_service_profile = + !network_server_service_profiles.contains(&roaming_service_profile_id); + ensure!( + not_network_server_contains_service_profile, + "NetworkServer already contains the given service_profile id" + ); + info!( + "NetworkServer id key exists but its vector value does not contain the given service_profile id" + ); + >::mutate(roaming_network_server_id, |v| { + if let Some(value) = v { + value.push(roaming_service_profile_id); + } + }); + info!( + "Associated service_profile {:?} with network_server {:?}", + roaming_service_profile_id, + roaming_network_server_id + ); + Ok(()) + } else { + info!( + "NetworkServer id key does not yet exist. Creating the network_server key {:?} and appending the \ + service_profile id {:?} to its vector value", + roaming_network_server_id, + roaming_service_profile_id + ); + >::insert( + roaming_network_server_id, + &vec![roaming_service_profile_id], + ); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_service_profile_id() -> Result { + let roaming_service_profile_id = Self::roaming_service_profiles_count(); + if roaming_service_profile_id == ::max_value() { + return Err(DispatchError::Other("RoamingServiceProfiles count overflow")); + } + Ok(roaming_service_profile_id) + } + + fn insert_roaming_service_profile( + owner: &T::AccountId, + roaming_service_profile_id: T::RoamingServiceProfileIndex, + roaming_service_profile: RoamingServiceProfile, + ) { + // Create and store roaming service_profile + >::insert(roaming_service_profile_id, roaming_service_profile); + >::put(roaming_service_profile_id + One::one()); + >::insert(roaming_service_profile_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_service_profile_id: T::RoamingServiceProfileIndex) { + >::insert(roaming_service_profile_id, to); + } +} diff --git a/pallets/roaming/roaming-service-profiles/src/mock.rs b/pallets/roaming/roaming-service-profiles/src/mock.rs new file mode 100644 index 00000000..ea5433f6 --- /dev/null +++ b/pallets/roaming/roaming-service-profiles/src/mock.rs @@ -0,0 +1,134 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingServiceProfileDownlinkRate = u32; + type RoamingServiceProfileIndex = u64; + type RoamingServiceProfileUplinkRate = u32; +} + + +pub type RoamingServiceProfileModule = Pallet; +pub type RoamingNetworkServerModule = roaming_network_servers::Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-service-profiles/src/tests.rs b/pallets/roaming/roaming-service-profiles/src/tests.rs new file mode 100644 index 00000000..ebf32522 --- /dev/null +++ b/pallets/roaming/roaming-service-profiles/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingServiceProfileModule::roaming_service_profiles_count(), 0); + assert!(RoamingServiceProfileModule::roaming_service_profile(0).is_none()); + assert_eq!(RoamingServiceProfileModule::roaming_service_profile_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingServiceProfileModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingServiceProfileModule::roaming_service_profiles_count(), 1); + assert!(RoamingServiceProfileModule::roaming_service_profile(0).is_some()); + assert_eq!(RoamingServiceProfileModule::roaming_service_profile_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingServiceProfileModule::create(Origin::signed(1)), "RoamingServiceProfiles count overflow"); + // Verify Storage + assert_eq!(RoamingServiceProfileModule::roaming_service_profiles_count(), u64::max_value()); + assert!(RoamingServiceProfileModule::roaming_service_profile(0).is_none()); + assert_eq!(RoamingServiceProfileModule::roaming_service_profile_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingServiceProfileModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingServiceProfileModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingServiceProfileModule::roaming_service_profiles_count(), 1); + assert!(RoamingServiceProfileModule::roaming_service_profile(0).is_some()); + assert_eq!(RoamingServiceProfileModule::roaming_service_profile_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingServiceProfileModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingServiceProfileModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming service_profile" + ); + assert_noop!( + RoamingServiceProfileModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming service_profile" + ); + // Verify Storage + assert_eq!(RoamingServiceProfileModule::roaming_service_profiles_count(), 1); + assert!(RoamingServiceProfileModule::roaming_service_profile(0).is_some()); + assert_eq!(RoamingServiceProfileModule::roaming_service_profile_owner(0), Some(1)); + }); +} diff --git a/pallets/roaming/roaming-sessions/Cargo.toml b/pallets/roaming/roaming-sessions/Cargo.toml new file mode 100644 index 00000000..43089af2 --- /dev/null +++ b/pallets/roaming/roaming-sessions/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = 'roaming-sessions' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + 'roaming-devices/std', + 'roaming-organizations/std', + 'roaming-network-servers/std', + 'roaming-networks/std', + 'roaming-operators/std', + 'serde', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +serde = { version = '1.0.136', optional = true, features = ['derive'] } + +roaming-devices = { default-features = false, package = 'roaming-devices', path = '../roaming-devices' } +roaming-organizations = { default-features = false, package = 'roaming-organizations', path = '../roaming-organizations' } +roaming-network-servers = { default-features = false, package = 'roaming-network-servers', path = '../roaming-network-servers' } +roaming-networks = { default-features = false, package = 'roaming-networks', path = '../roaming-networks' } +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../roaming-operators' } + +[dev-dependencies] diff --git a/pallets/roaming/roaming-sessions/src/benchmarking.rs b/pallets/roaming/roaming-sessions/src/benchmarking.rs new file mode 100644 index 00000000..c1909fb5 --- /dev/null +++ b/pallets/roaming/roaming-sessions/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as RoamingSessions; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(RoamingSessions, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/roaming/roaming-sessions/src/lib.rs b/pallets/roaming/roaming-sessions/src/lib.rs new file mode 100644 index 00000000..e49a71c5 --- /dev/null +++ b/pallets/roaming/roaming-sessions/src/lib.rs @@ -0,0 +1,493 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +use log::{warn, info}; +use codec::{ + Decode, + Encode, +}; +use frame_support::{ + decl_event, + decl_module, + decl_storage, + ensure, + traits::{ + Get, + Randomness, + }, + Parameter, +}; +use frame_system::ensure_signed; +use scale_info::TypeInfo; +use sp_io::hashing::blake2_128; +use sp_runtime::{ + traits::{ + AtLeast32Bit, + Bounded, + Member, + One, + }, + DispatchError, +}; +use sp_std::prelude::*; // Imports Vec +#[macro_use] +extern crate alloc; // Required to use Vec + +#[cfg(test)] +mod mock; + +#[cfg(test)] +mod tests; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +/// The module's configuration trait. +pub trait Config: + frame_system::Config + roaming_operators::Config + roaming_devices::Config + roaming_network_servers::Config +{ + type Event: From> + Into<::Event>; + type RoamingSessionIndex: Parameter + Member + AtLeast32Bit + Bounded + Default + Copy; +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct RoamingSession(pub [u8; 16]); + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingSessionJoinRequest { + session_network_server_id: U, + session_join_requested_at_block: V, +} + +#[cfg_attr(feature = "std", derive(Debug))] +#[derive(Encode, Decode, Default, Clone, PartialEq, TypeInfo)] +// Generic type parameters - Balance +pub struct RoamingSessionJoinAccept { + session_join_request_accept_expiry: U, + session_join_request_accept_accepted_at_block: V, +} + +decl_event!( + pub enum Event where + ::AccountId, + ::RoamingSessionIndex, + ::RoamingDeviceIndex, + ::RoamingNetworkServerIndex, + ::BlockNumber, + { + /// A roaming session is created. (owner, roaming_session_id) + Created(AccountId, RoamingSessionIndex), + /// A roaming session is transferred. (from, to, roaming_session_id) + Transferred(AccountId, AccountId, RoamingSessionIndex), + /// A roaming session join request requested + RoamingSessionJoinRequestRequested(AccountId, RoamingSessionIndex, RoamingNetworkServerIndex, BlockNumber), + /// A roaming session join request accepted + RoamingSessionJoinRequestAccepted(AccountId, RoamingSessionIndex, BlockNumber, BlockNumber), + /// A roaming session is assigned to a device. (owner of device, roaming_session_id, roaming_device_id) + AssignedSessionToDevice(AccountId, RoamingSessionIndex, RoamingDeviceIndex), + } +); + +// This module's storage items. +decl_storage! { + trait Store for Module as RoamingSessions { + /// Stores all the roaming sessions, key is the roaming session id / index + pub RoamingSessions get(fn roaming_session): map hasher(opaque_blake2_256) T::RoamingSessionIndex => Option; + + /// Stores the total number of roaming sessions. i.e. the next roaming session index + pub RoamingSessionsCount get(fn roaming_sessions_count): T::RoamingSessionIndex; + + /// Get roaming session owner + pub RoamingSessionOwners get(fn roaming_session_owner): map hasher(opaque_blake2_256) T::RoamingSessionIndex => Option; + + /// Get roaming session join requests + pub RoamingSessionJoinRequests get(fn roaming_session_join_requests): map hasher(opaque_blake2_256) T::RoamingSessionIndex => Option>; + + /// Get roaming session join accepts + pub RoamingSessionJoinAccepts get(fn roaming_session_join_accepts): map hasher(opaque_blake2_256) T::RoamingSessionIndex => Option>; + + /// Get roaming session device + pub RoamingSessionDevices get(fn roaming_session_device): map hasher(opaque_blake2_256) T::RoamingSessionIndex => Option; + + /// Get roaming device sessions + pub RoamingDeviceSessions get(fn roaming_device_sessions): map hasher(opaque_blake2_256) T::RoamingDeviceIndex => Option> + } +} + +// The module's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Create a new roaming session + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn create(origin) { + let sender = ensure_signed(origin)?; + let roaming_session_id = Self::next_roaming_session_id()?; + + // Generate a random 128bit value + let unique_id = Self::random_value(&sender); + + // Create and store roaming session + let roaming_session = RoamingSession(unique_id); + Self::insert_roaming_session(&sender, roaming_session_id, roaming_session); + + Self::deposit_event(RawEvent::Created(sender, roaming_session_id)); + } + + /// Transfer a roaming session to new owner + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn transfer(origin, to: T::AccountId, roaming_session_id: T::RoamingSessionIndex) { + let sender = ensure_signed(origin)?; + + ensure!(Self::roaming_session_owner(roaming_session_id) == Some(sender.clone()), "Only owner can transfer roaming session"); + + Self::update_owner(&to, roaming_session_id); + + Self::deposit_event(RawEvent::Transferred(sender, to, roaming_session_id)); + } + + /// Set roaming session join request + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_join_request( + origin, + roaming_session_id: T::RoamingSessionIndex, + _session_network_server_id: Option, + // FIXME - we shouldn't be passing the requested_at timestamp as an argument, it should be generated from the current time within this function + _session_join_requested_at_block: Option, + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming session id whose join request we want to change actually exists + let is_roaming_session = Self::exists_roaming_session(roaming_session_id).is_ok(); + ensure!(is_roaming_session, "RoamingSession does not exist"); + + // Ensure that the caller is owner of the session join request they are trying to change + ensure!(Self::roaming_session_owner(roaming_session_id) == Some(sender.clone()), "Only owner can set join request for roaming session"); + + let session_network_server_id = match _session_network_server_id { + Some(value) => value, + None => Default::default() // Default + }; + let session_join_requested_at_block = match _session_join_requested_at_block { + Some(value) => value, + None => Default::default() + }; + + info!("Checking that only the owner of the given network server id that the device is trying to connect to can set an associated roaming session join request"); + // Ensure that the caller is owner of the network server id that the device is trying to connect to for the session join request + ensure!((>::is_roaming_network_server_owner( + session_network_server_id.clone(), + sender.clone() + )).is_ok(), "Only owner of the given network server id that the device is trying to connect to can set an associated roaming session join request" + ); + + // Check if a roaming session join request already exists with the given roaming session id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_session_join_request_index(roaming_session_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_session_id, |session_join_request| { + if let Some(_session_join_request) = session_join_request { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _session_join_request.session_network_server_id = session_network_server_id.clone(); + _session_join_request.session_join_requested_at_block = session_join_requested_at_block.clone(); + } + }); + info!("Checking mutated values"); + let fetched_session_join_request = >::get(roaming_session_id); + if let Some(_session_join_request) = fetched_session_join_request { + info!("Latest field session_network_server_id {:#?}", _session_join_request.session_network_server_id); + info!("Latest field session_join_requested_at_block {:#?}", _session_join_request.session_join_requested_at_block); + } + } else { + info!("Inserting values"); + + // Create a new roaming session join request instance with the input params + let roaming_session_join_request_instance = RoamingSessionJoinRequest { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + session_network_server_id: session_network_server_id.clone(), + session_join_requested_at_block: session_join_requested_at_block.clone() + }; + + >::insert( + roaming_session_id, + &roaming_session_join_request_instance + ); + + info!("Checking inserted values"); + let fetched_session_join_request = >::get(roaming_session_id); + if let Some(_session_join_request) = fetched_session_join_request { + info!("Inserted field session_network_server_id {:#?}", _session_join_request.session_network_server_id); + info!("Inserted field session_join_requested_at_block {:#?}", _session_join_request.session_join_requested_at_block); + } + } + + Self::deposit_event(RawEvent::RoamingSessionJoinRequestRequested( + sender, + roaming_session_id, + session_network_server_id, + session_join_requested_at_block + )); + } + + /// Set roaming session join accept + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn set_join_accept( + origin, + roaming_session_id: T::RoamingSessionIndex, + // FIXME - this may stay optional, but if it's not provided we need to set a default value for how long until a join accept expires + _session_join_request_accept_expiry: Option, + // FIXME - we shouldn't be passing the accepted_at timestamp as an argument, it should be generated from the current time within this function + _session_join_request_accept_accepted_at_block: Option, + ) -> Result<(), DispatchError> { + let sender = ensure_signed(origin)?; + + // Ensure that the roaming session id whose join accept we want to change actually exists + let is_roaming_session = Self::exists_roaming_session(roaming_session_id).is_ok(); + ensure!(is_roaming_session, "RoamingSession does not exist"); + + // Ensure that the caller is owner of the session join accept they are trying to change + ensure!(Self::roaming_session_owner(roaming_session_id) == Some(sender.clone()), "Only owner can set join accept for roaming session"); + + info!("Get the network server id associated with the join request of the given session id"); + let session_join_request = Self::roaming_session_join_requests(roaming_session_id); + + if let Some(_session_join_request) = session_join_request { + // Ensure that the caller is owner of the network server id that the device is trying to connect to for the session join request + ensure!((>::is_roaming_network_server_owner( + _session_join_request.session_network_server_id.clone(), + sender.clone() + )).is_ok(), "Only owner of the given network server id that the device is trying to connect to can set an associated roaming session join accept" + ); + } else { + // There must be a session join request associated with the session join accept + return Err(DispatchError::Other("RoamingSessionJoinRequest does not exist")); + } + + let session_join_request_accept_expiry = match _session_join_request_accept_expiry { + Some(value) => value, + None => Default::default() // Default + }; + let session_join_request_accept_accepted_at_block = match _session_join_request_accept_accepted_at_block { + Some(value) => value, + None => Default::default() + }; + + // Check if a roaming session join accept already exists with the given roaming session id + // to determine whether to insert new or mutate existing. + if Self::has_value_for_session_join_accept_index(roaming_session_id).is_ok() { + info!("Mutating values"); + >::mutate(roaming_session_id, |session_join_accept| { + if let Some(_session_join_accept) = session_join_accept { + // Only update the value of a key in a KV pair if the corresponding parameter value has been provided + _session_join_accept.session_join_request_accept_expiry = session_join_request_accept_expiry.clone(); + _session_join_accept.session_join_request_accept_accepted_at_block = session_join_request_accept_accepted_at_block.clone(); + } + }); + info!("Checking mutated values"); + let fetched_session_join_accept = >::get(roaming_session_id); + if let Some(_session_join_accept) = fetched_session_join_accept { + info!("Latest field session_join_request_accept_expiry {:#?}", _session_join_accept.session_join_request_accept_expiry); + info!("Latest field session_join_request_accept_accepted_at_block {:#?}", _session_join_accept.session_join_request_accept_accepted_at_block); + } + } else { + info!("Inserting values"); + + // Create a new roaming session join accept instance with the input params + let roaming_session_join_accept_instance = RoamingSessionJoinAccept { + // Since each parameter passed into the function is optional (i.e. `Option`) + // we will assign a default value if a parameter value is not provided. + session_join_request_accept_expiry: session_join_request_accept_expiry.clone(), + session_join_request_accept_accepted_at_block: session_join_request_accept_accepted_at_block.clone() + }; + + >::insert( + roaming_session_id, + &roaming_session_join_accept_instance + ); + + info!("Checking inserted values"); + let fetched_session_join_accept = >::get(roaming_session_id); + if let Some(_session_join_accept) = fetched_session_join_accept { + info!("Inserted field session_join_request_accept_expiry {:#?}", _session_join_accept.session_join_request_accept_expiry); + info!("Inserted field session_join_request_accept_accepted_at_block {:#?}", _session_join_accept.session_join_request_accept_accepted_at_block); + } + } + + Self::deposit_event(RawEvent::RoamingSessionJoinRequestAccepted( + sender, + roaming_session_id, + session_join_request_accept_expiry, + session_join_request_accept_accepted_at_block + )); + + Ok(()) + } + + #[weight = 10_000 + T::DbWeight::get().writes(1)] + pub fn assign_session_to_device( + origin, + roaming_session_id: T::RoamingSessionIndex, + roaming_device_id: T::RoamingDeviceIndex + ) { + let sender = ensure_signed(origin)?; + + // Ensure that the given device id already exists + let is_roaming_device = > + ::exists_roaming_device(roaming_device_id).is_ok(); + ensure!(is_roaming_device, "RoamingDevice does not exist"); + + // Ensure that caller of the function is the owner of the device id to assign the session to + ensure!( + >::is_roaming_device_owner(roaming_device_id, sender.clone()).is_ok(), + "Only the roaming device owner can assign itself a roaming session" + ); + + Self::associate_session_with_device(roaming_session_id, roaming_device_id) + .expect("Unable to associate session with device"); + + // Ensure that the given session id already exists + let roaming_session = Self::roaming_session(roaming_session_id); + ensure!(roaming_session.is_some(), "Invalid roaming_session_id"); + + // Ensure that the session is not already owned by a different device + // Unassign the session from any existing device since it may only be owned by one device + >::remove(roaming_session_id); + + // Assign the session owner to the given device (even if already belongs to them) + >::insert(roaming_session_id, roaming_device_id); + + Self::deposit_event(RawEvent::AssignedSessionToDevice(sender, roaming_session_id, roaming_device_id)); + } + } +} + +impl Module { + pub fn is_roaming_session_owner( + roaming_session_id: T::RoamingSessionIndex, + sender: T::AccountId, + ) -> Result<(), DispatchError> { + ensure!( + Self::roaming_session_owner(&roaming_session_id).map(|owner| owner == sender).unwrap_or(false), + "Sender is not owner of RoamingSession" + ); + Ok(()) + } + + pub fn exists_roaming_session(roaming_session_id: T::RoamingSessionIndex) -> Result { + match Self::roaming_session(roaming_session_id) { + Some(roaming_session) => Ok(roaming_session), + None => Err(DispatchError::Other("RoamingSession does not exist")), + } + } + + pub fn exists_roaming_session_join_request( + roaming_session_id: T::RoamingSessionIndex, + ) -> Result<(), DispatchError> { + match Self::roaming_session_join_requests(roaming_session_id) { + Some(_) => Ok(()), + None => Err(DispatchError::Other("RoamingSessionJoinRequest does not exist")), + } + } + + pub fn exists_roaming_session_join_accept(roaming_session_id: T::RoamingSessionIndex) -> Result<(), DispatchError> { + match Self::roaming_session_join_accepts(roaming_session_id) { + Some(_) => Ok(()), + None => Err(DispatchError::Other("RoamingSessionJoinAccept does not exist")), + } + } + + pub fn has_value_for_session_join_request_index( + roaming_session_id: T::RoamingSessionIndex, + ) -> Result<(), DispatchError> { + info!("Checking if session join request has a value that is defined"); + let fetched_session_join_request = >::get(roaming_session_id); + if let Some(_) = fetched_session_join_request { + info!("Found value for session join request"); + return Ok(()); + } + warn!("No value for session join request"); + Err(DispatchError::Other("No value for session join request")) + } + + pub fn has_value_for_session_join_accept_index( + roaming_session_id: T::RoamingSessionIndex, + ) -> Result<(), DispatchError> { + info!("Checking if session join accept has a value that is defined"); + let fetched_session_join_accept = >::get(roaming_session_id); + if let Some(_) = fetched_session_join_accept { + info!("Found value for session join accept"); + return Ok(()); + } + warn!("No value for session join accept"); + Err(DispatchError::Other("No value for session join accept")) + } + + /// Only push the session id onto the end of the vector if it does not already exist + pub fn associate_session_with_device( + roaming_session_id: T::RoamingSessionIndex, + roaming_device_id: T::RoamingDeviceIndex, + ) -> Result<(), DispatchError> { + // Early exit with error since do not want to append if the given device id already exists as a key, + // and where its corresponding value is a vector that already contains the given session id + if let Some(device_sessions) = Self::roaming_device_sessions(roaming_device_id) { + info!("Device id key {:?} exists with value {:?}", roaming_device_id, device_sessions); + let not_device_contains_session = !device_sessions.contains(&roaming_session_id); + ensure!(not_device_contains_session, "Device already contains the given session id"); + info!("Device id key exists but its vector value does not contain the given session id"); + >::mutate(roaming_device_id, |v| { + if let Some(value) = v { + value.push(roaming_session_id); + } + }); + info!("Associated session {:?} with device {:?}", roaming_session_id, roaming_device_id); + Ok(()) + } else { + info!( + "Device id key does not yet exist. Creating the device key {:?} and appending the session id {:?} to \ + its vector value", + roaming_device_id, + roaming_session_id + ); + >::insert(roaming_device_id, &vec![roaming_session_id]); + Ok(()) + } + } + + fn random_value(sender: &T::AccountId) -> [u8; 16] { + let payload = ( + T::Randomness::random(&[0]), + sender, + >::extrinsic_index(), + >::block_number(), + ); + payload.using_encoded(blake2_128) + } + + fn next_roaming_session_id() -> Result { + let roaming_session_id = Self::roaming_sessions_count(); + if roaming_session_id == ::max_value() { + return Err(DispatchError::Other("RoamingSessions count overflow")); + } + Ok(roaming_session_id) + } + + fn insert_roaming_session( + owner: &T::AccountId, + roaming_session_id: T::RoamingSessionIndex, + roaming_session: RoamingSession, + ) { + // Create and store roaming session + >::insert(roaming_session_id, roaming_session); + >::put(roaming_session_id + One::one()); + >::insert(roaming_session_id, owner.clone()); + } + + fn update_owner(to: &T::AccountId, roaming_session_id: T::RoamingSessionIndex) { + >::insert(roaming_session_id, to); + } +} diff --git a/pallets/roaming/roaming-sessions/src/mock.rs b/pallets/roaming/roaming-sessions/src/mock.rs new file mode 100644 index 00000000..a7e5c7bf --- /dev/null +++ b/pallets/roaming/roaming-sessions/src/mock.rs @@ -0,0 +1,138 @@ +// Creating mock runtime here + +use crate::{ + Pallet, + Config, +}; + +use frame_support::{ + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, +}; + +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + Perbill, +}; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + } +); + +parameter_types! { + pub const BlockHashCount: u32 = 250; +} +impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; +} +impl pallet_randomness_collective_flip::Config for Test {} +pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; +parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; +} +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); +} +pub const OPERATIONAL_FEE_MULTIPLIER_AS_CONST: u8 = 5; +parameter_types! { + pub const TransactionByteFee: u64 = 1; + pub OperationalFeeMultiplier: u8 = OPERATIONAL_FEE_MULTIPLIER_AS_CONST; +} +impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = ConstU8; + type WeightToFee = IdentityFee; +} +impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} +impl roaming_networks::Config for Test { + type Event = (); + type RoamingNetworkIndex = u64; +} +impl roaming_network_servers::Config for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; +} +impl roaming_organizations::Config for Test { + type Event = (); + type RoamingOrganizationIndex = u64; +} +impl roaming_devices::Config for Test { + type Event = (); + type RoamingDeviceIndex = u64; +} +impl Config for Test { + type Event = (); + type RoamingSessionIndex = u64; +} + +pub type RoamingSessionModule = Pallet; + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext +} diff --git a/pallets/roaming/roaming-sessions/src/tests.rs b/pallets/roaming/roaming-sessions/src/tests.rs new file mode 100644 index 00000000..06f0e3bd --- /dev/null +++ b/pallets/roaming/roaming-sessions/src/tests.rs @@ -0,0 +1,81 @@ +// Tests to be written here + +use super::*; +use crate::mock::*; +use frame_support::{ + assert_noop, + assert_ok, +}; + +#[test] +fn basic_setup_works() { + new_test_ext().execute_with(|| { + // Verify Initial Storage + assert_eq!(RoamingSessionModule::roaming_sessions_count(), 0); + assert!(RoamingSessionModule::roaming_session(0).is_none()); + assert_eq!(RoamingSessionModule::roaming_session_owner(0), None); + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + }); +} + +#[test] +fn create_works() { + new_test_ext().execute_with(|| { + // Call Functions + assert_ok!(RoamingSessionModule::create(Origin::signed(1))); + // Verify Storage + assert_eq!(RoamingSessionModule::roaming_sessions_count(), 1); + assert!(RoamingSessionModule::roaming_session(0).is_some()); + assert_eq!(RoamingSessionModule::roaming_session_owner(0), Some(1)); + }); +} + +#[test] +fn create_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + >::put(u64::max_value()); + // Call Functions + assert_noop!(RoamingSessionModule::create(Origin::signed(1)), "RoamingSessions count overflow"); + // Verify Storage + assert_eq!(RoamingSessionModule::roaming_sessions_count(), u64::max_value()); + assert!(RoamingSessionModule::roaming_session(0).is_none()); + assert_eq!(RoamingSessionModule::roaming_session_owner(0), None); + }); +} + +#[test] +fn transfer_works() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingSessionModule::create(Origin::signed(1))); + // Call Functions + assert_ok!(RoamingSessionModule::transfer(Origin::signed(1), 2, 0)); + // Verify Storage + assert_eq!(RoamingSessionModule::roaming_sessions_count(), 1); + assert!(RoamingSessionModule::roaming_session(0).is_some()); + assert_eq!(RoamingSessionModule::roaming_session_owner(0), Some(2)); + }); +} + +#[test] +fn transfer_handles_basic_errors() { + new_test_ext().execute_with(|| { + // Setup + assert_ok!(RoamingSessionModule::create(Origin::signed(1))); + // Call Functions + assert_noop!( + RoamingSessionModule::transfer(Origin::signed(2), 2, 0), + "Only owner can transfer roaming session" + ); + assert_noop!( + RoamingSessionModule::transfer(Origin::signed(1), 2, 1), + "Only owner can transfer roaming session" + ); + // Verify Storage + assert_eq!(RoamingSessionModule::roaming_sessions_count(), 1); + assert!(RoamingSessionModule::roaming_session(0).is_some()); + assert_eq!(RoamingSessionModule::roaming_session_owner(0), Some(1)); + }); +} diff --git a/pallets/treasury/dao/Cargo.toml b/pallets/treasury/dao/Cargo.toml new file mode 100644 index 00000000..6998dcc7 --- /dev/null +++ b/pallets/treasury/dao/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = 'treasury-dao' +version = '0.1.0' +authors = ['Luke Schoen'] +edition = '2021' + +[features] +default = ['std'] +runtime-benchmarks = ['frame-benchmarking/runtime-benchmarks'] +std = [ + 'codec/std', + 'scale-info/std', + 'log/std', + 'safe-mix/std', + 'frame-support/std', + 'frame-system/std', + 'frame-benchmarking/std', + 'pallet-balances/std', + 'pallet-randomness-collective-flip/std', + 'pallet-transaction-payment/std', + 'pallet-treasury/std', + 'sp-core/std', + 'sp-io/std', + 'sp-runtime/std', + 'sp-std/std', + + 'roaming-operators/std', +] +try-runtime = ['frame-support/try-runtime'] + +[dependencies] +hex-literal = { version = '0.3.4', optional = false } +codec = { version = '3.1.2', package = 'parity-scale-codec', default-features = false, features = ['derive', 'max-encoded-len'] } +scale-info = { version = '2.0.1', default-features = false, features = ['derive'] } +log = { version = '0.4.14', default-features = false } +safe-mix = { version = '1.0.0', default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-randomness-collective-flip = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +pallet-treasury = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } +sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false } + +roaming-operators = { default-features = false, package = 'roaming-operators', path = '../../roaming/roaming-operators' } + +[dev-dependencies] diff --git a/pallets/treasury/dao/src/benchmarking.rs b/pallets/treasury/dao/src/benchmarking.rs new file mode 100644 index 00000000..e392be24 --- /dev/null +++ b/pallets/treasury/dao/src/benchmarking.rs @@ -0,0 +1,12 @@ +//! Benchmarking setup + +use super::*; + +#[allow(unused)] +use crate::Pallet as TreasuryDao; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, whitelisted_caller}; +use frame_system::RawOrigin; + +// benchmarks! {} + +impl_benchmark_test_suite!(TreasuryDao, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/treasury/dao/src/lib.rs b/pallets/treasury/dao/src/lib.rs new file mode 100644 index 00000000..b789c1c3 --- /dev/null +++ b/pallets/treasury/dao/src/lib.rs @@ -0,0 +1,84 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +//! A pallet that funds the pallet_treasury's account_id in the genesis block + +use log::{warn, info}; +use frame_support::{ + decl_error, + decl_event, + decl_module, + decl_storage, + dispatch::DispatchResult, + ensure, + traits::{ + Currency, + ExistenceRequirement, + }, +}; +use frame_system::{ + self as system, + ensure_signed, +}; +use hex_literal::hex; +use sp_runtime::{AccountId32}; +use sp_core::crypto::UncheckedFrom; +use sp_std::prelude::*; + +pub trait Config: + frame_system::Config + roaming_operators::Config + pallet_treasury::Config + pallet_balances::Config +{ + type Event: From> + Into<::Event>; + type Currency: Currency; +} + +type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +decl_event!( + pub enum Event + where + AccountId = ::AccountId, + BalanceOf = BalanceOf, + { + TreasuryFundedWithUnlockedReserves(AccountId, AccountId, BalanceOf), + } +); + +decl_storage! { + trait Store for Module as TreasuryDao {} +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + fn on_finalize(current_block_number: T::BlockNumber) { + info!("treasury-dao - on_finalize"); + info!("treasury-dao - current block number {:#?}", current_block_number); + + if >::block_number() == 0u32.into() { + info!("treasury-dao - on_finalize: Genesis block"); + // let treasury_account_id: T::AccountId = >::account_id(); + // let endowed_account_id = AccountId32::from_str(&"4LTFqiD6H6g8a7ur9WH4RxhWx2givWfK7o5EDed3ai1nYTvk".to_string()).unwrap() + // let balance_to_deposit = ::Currency::free_balance(&endowed_account_id); + + // if balance_to_deposit > 0u32.into() { + // ::Currency::transfer( + // &endowed_account_id, + // &treasury_account_id, + // balance_to_deposit, + // ExistenceRequirement::KeepAlive + // ); + // } + + // // Emit event since treasury funded with unlocked reserves from endowed account + // Self::deposit_event(RawEvent::TreasuryFundedWithUnlockedReserves( + // endowed_account_id, + // treasury_account_id, + // balance_to_deposit + // )); + } else { + info!("treasury-dao - on_finalize: Not genesis block"); + } + } + } +} diff --git a/res/upgrades/3.6.0/datahighway_parachain_runtime.compact.compressed.wasm b/res/upgrades/3.6.0/datahighway_parachain_runtime.compact.compressed.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a332d474a1f4cc7fec5feaad18aa542c3366577d GIT binary patch literal 1094980 zcmWh!1yoy26UE(vySqzqcXvv0cMB3IP#l80OQ5(r#VHhbr)ZHP!CN3evG)7(?>Tw< z@{%)eW_Qk=-8-`e1BL-AJE^GboqT^0Ox`7;SdA$A5$Y3&{bHvfL4Ei)7IXazm#hFO zVui?tN9BM9LqEG*B_=U&6oD>^7q-w1BcseK21vOhcO$<0bMvukX(#mApYO@=J*D-- zevC)&bnYij4nqyZMB+n&V89zq&PXA!C51R=TUP7tFGGg)X$99#7w(w|C#t}Zev25= zQ;Gt^JYRSA+HUzEZ-377zn9#g*R`X4V+0!aCC@e|TId{){+y^O2XxqJ@886athqM6 zIVo6EFWav3AjCuO#aDAxfDd+Z*kv(OM`kc@Xhl5N$>%^h!#e*b&wM4M!YV&vGQ>PJ zj3M+QpUi8`z9i_UNT32H4S_9ET2K#eEWH%e7CLNSLR`0TOnf?5Ky+I7+j&n03Z@>o zPvLr~RNXodnD?7031b+_ecB`|xyc7w2m!;zuRbNp%I5BgOwoSzQ*0Rv0O!NBUwiDnU+W&oUuyb;e*3T1Y9pL`*GGW2?y6$hvh7|bC z)qAL-TQ}{;%3FXxV?-PT?ax-XNzLRw^{el4R&a0CW942?d-p!=f4(@I&bk+s0Rlo; zU4O5QHwSq`rwFC`0v^3XcOKcVwO>7>?~?ZW3aMJ#TJ+BL7px4(9^7DMZvitp=PH%g z<*lC{TVK<|`mc;%u^u*#hg2-)n8wKM-y#);io?QX^|q_JXMZPr9`fYR9-Yyombcv*^UF8o*t+p$p_3KeI2+p+m% zfL?m!{GaXqKH5fj=~9}GY?!QGxn>&g5L?*4u3^1@!LPo$n@41K9c&M9E!O^0`Y1#B zcK%_3ce{Z*P3h8o_Y9ghXPcuh*S7bb-l0i*BJ82+leD3sz3f-ow>xMjWGmMDXo}C5 z>R;P7tn)BQQ-gUnJG%X5QLu;h>Y|;2`#tS!pUqiKo*r~)26A7nuInA6z}COlhTVrt zzJBE;;(mj6A_P4?eis}bY590@u(i|Od^LWWi%A;x)eyY}_0!{HpH{1P(T2h2ua=!! ztv8p&5`mA8C*@Ncms{`&VcUgw5_Rs~k2|8x{aTx&XFCTH*Tz$Hp`l5%p5B(~WTEh( z*s);`mk#?f{7`9yH?t7*SgCXI&^7!(a?w)vDtwsu!^>lb>NSAN;uJ__Vf|6yj|bHQ zBdo|%G9ooJw3Ef164k?7jmNeF1x<6tL~tyVBbT5JC4ohmTi#Y3OJhK9Bra1-<3+DL zE>kf3t<(XBMUwreygI(dww?kKi#Yr3uo^0h1-og55)O+zyKBW5CW~$MludSACU17F zemfG24f(J>VJx9Y@*eq??N}@TCtI$p5|c?h`?xFylSwT3N$(J;LOgpwPMxwsEcsrK z5S+=A{Y}7EF##+2kw4M?ORPQ_i#2(Z&GAG$nAwjxK|WI=b15Sxh1reSHH$fs*(oz! z{SY;il-?D2no@034t~#@-V<4g$Lx`w9T|he?4BMU>43w`C5MET$(LR$FNjV^9^oq| zlRg#6jLU2r5lYOU4^q;{Qx+qp(2t2?6i|LgJg>*BxQweTLi}CtT{XLwKEARH@wgs} z;xe|fO`-+6TUk7~oKKmHSYH2LX}N%rEwPZ@uG}S_ks(n>&!M_jD+4o8LyuSqK%mUb z{!$jNrH`d-nb;HImuOW=cR+1JT}n+)eL!1ENq~KWb%VKt$&cxc#*bDm6aR}oG1>*U zTqu5w{xIqctDHSPo1QWX1A~z!-i6*bQVo@nS1|ymP9S?ik3`WJ$5H?Uji*zTz!~RP z8ePgSBaRIwueWuHW1x!FBfqm%12d4vdXdlAvdI zh{~E?oj|6tE`hW{h}s%kRQfFuSm+iYj}o219Pvi45Sc+6KP48Wtcz!j4LUZdT8=zg zJ)AvsKU4#h&`HRm07e%*G%9sku}1T5?BpC2_3#yyBb)+(1O?v=qifL_cn1U{o-kGr z&+zG`qin<&*ptan(`ia#=!TmR7m4K~SDDljnB-7;>1(z1C|N$CxFU{4u^4dMmP-{K?TxiUm@(|YZpo!G z5tRrEOqD5;`ipOJ00$fz!n5?}%qQ2wILu=4h&cq@TSR)2hyjAXWlYh!IGF`{$!@uZ4A7qafKCA1 z2#3ZJ6UU#cNKX^>Ddp@Dtu|^p>B3P1^ca*j)Zghi$!jn4mdoxG{U>K;>t_>_+!nCF z@39*4IMFzzjC^Y!_2x@g6j9?iQ#Dd&@JQ(DMe8Yz-qnuPI_S-pMO7p!=ET+G|H8#X zgHTEP$qm%I3@;YY3Q4n&UqpXB;LXQ2Mg$JKnqV(Pwb{H2K{X$K?@eqt%yGbB zf|VLocEI+8BPpMau1~3CjWGT#o>W>7r%4_O9g|jC#G6YGED(dUSjZslZAZ>A8c!jq zam75G6^lnjBLtdS5?6Fi(V>*!Igme6P0S{c)d^8;T(6AZ%r$9}i;JVzm-BnNxmiUj z6_uC4pcst@SklS)pvc3<0bj;vQjDl}=_EiX-*1W$QB=`UnXDoV5EK~Hk_q?+MJ0SH zdummve~x5D5%A>>lvSe2@fGvS*nxUb)QQGM{va&D_M8 z1}=a`Arxf)?VW=3**Aok$q%gYC|rE8>GbME>iKGS;6z-qxTEM%Md!E~l)N}jECvB1 z9cmwWFjARt>RBmgq+1-*JCw4BqS4`>zn0EzQB}a@5&(z!SS3#d)YuE`&!U_HVnUnR z%JMwrxtIosYIu6I5F!O{EJQ&Z?iWRA<|%e1T3Q;GxQ* zpcadp_L=Q1!H5EAr)j5_tc_PDDI%)yfm(hTZTu01P^^n4ELW{y`SvH59ZReZK^;ZB zfm}9Nk6NN-e)du0E8-V)eWH4jh#+G1th>lhqiq@OKmFvF@Fl(9u5RqnV&n<1YzSne z8^4en_&H#F7Ld132Gy}WVKTDE^Ci;}HrDFdO=Q%*CzcU^yKn6~oJ41}k56+`Q3aQh zMD5VV;9m&^9Ti_ z1~KNB#xd_0L5k^|VKXS#H?UE*nAAKHO7Emn;_QQ4MJLDc8BCV2v&K@Tl+Q#2&&cud zIm8-vVt3$7ju>wO1GGuG_(CSVH=J90Bqr)8t=2*$wbW9wh%-Gww6oMws%#LV!tli$ zCu&129etR_x9MfvGUk+QDvbrbsOU^Kbmkc7ryzb{`)-MRZb9&XOvahs5hQ6`#T%}It@REkOB9SPvinNRbC4C8g++ikDRs$ zH`Nm_71ImrI}s;`ky358oqG!{k`x$kVni`nn}%utkFoifCjH@GF}*kRj`t2_(3L{`b-X}3hNk{M{M(H zWU}Tr@5+df(}<*P?(>%`oKT~4Xt>0rc%=jectd(_5JzjUo6#1~b#PQ;I}qb>^e9T{ zx`af8j9E+oZGwn#sCluohaE?kNBtFXi3~#0`YIYWW61!bkg$+&4;v2;5n)Nqv!&Ki zB?5`4Z@r^Z2Eh(1zVLE8}cf;MU^^^I1JPL6gH^#_vIs0&V8Sqy?m)aVUaZltvh zuVPp$nN{R_8`5-y2y=2@p)cqk5vL<$O?nwwkjZ-@P^oXwY$Omc^rgJZ5%B5*52o0o znRRPvss3wUplo6?%;lg=Hy9zV##75^_hBB!%F5=@HB?JyWEnq-tH0xq%I2bKy{pv7 z;lc={jI8^AFK6&^lly(GR*)T|JQmR^T6{g;Cr4!CS~WyOQdS~Jr5?x6&yD;+2q=bf zH-)2uDK;mGBpinSe_Wu_>I+8HHP-489Kpah@}d7ZgQ3MtTxTzWjgeni=`f9i#L8~m ztT&wrK1a0rYAY*O6*D=q7ITt_QXcp{)-kwH0V#*m@Qa$QVB~ZRT8tbL5xN*Z3kq{* z?EK0*Btvu+f)3M?Mt)n{iwF`*liPuxwV*$ z%Iu;HRxv)*vjge`8__GZf(jKzve~NfL2mg3dUb-}86pxcqhL3jop&QSoRsM!_YNZ% zT5SA?b^P49To|E}B3=+Zi3y4!Gt)g;C=ugq2d3b(zXoIfP+Yq(pE#fczg!uW~;fK>?&9-&%=Z4!IyX2fBvLT8gkA>cQpA!>t-{UE2dxvIfXGds? z{qdGS(H6wq*uB^^x!))67q7E$Lza`2yY{%4YjU=+gnO}B@f>xB7~A|A#LvkTV$nO1 z+Tf}4-PrwoQ+uDrJjI7EI;kX(qwI%j-4v({_BN4O`V;|hIK}XPNpa2g+8c+BznC?77fQ7 z_QxJ~$@CZzW(^KbP>;JT(+szhdOH%Ly8QQ?PF7Y{0=jjFER1IFo4K5z-xE#eC^9t0 zmHaPxXECF)m@+UB@Z%%sYYTG{;^X6;bW4OPtdoiA1SM?=m@~`!I|Wr!=cw}ny4M-u z+9vx%9W-_>h+QsF6mU6rOo*RCvbYwDx0>A+wqjC(S=m@Nrn8WDPm_sI^4g6O3k)>Q zE7jCYIo})BanIU8gsSEXR$Lkdk~$VP9oGAdBo9#NZG0`7ItjlQ`#Je9c&u|cHwg=O zNSs3E=6r?BPK|tu-@C4hCsZ~nAs`?y3P;h4ITxFAEmyu%b`^1+Z|C+(Hs>M}Ad8%n za?kb?+`v>xM_o6X*sSd6FyqoR{Zph=V9?azYN%oOu1M)U-n{s;dy{&xPqlm#cXK1T zb7R|ja@L%NdlS9Mu-WAtbbXiHzF4Z?)tKvJuC|7KZhdFKw~hrfHZp;YY4ii}%VRff z5&^m5gGK=zZ$iL#({8UO^UFrzFzXbb^%;td=5@|0$bnR*tABMO^*E*uo>;!=1ckFw zR(yOdwqDx|pWMVXVzujX+y&qE}x5Vu_*^5+*IV$K>>jPqD(I)?>#}mgfY<@ zNywsR{PYgdxvE=+il8DW!$f-=lV0MQmNqQ{0Pr6VAquuX2yu|~IHpqL&oGbUPa z<$b4gZxS$Oy)X-^RcTh7%W`jm2na2jx=)xEcRKm5Cp&GcbgTjT%$lH;of8FBPAOXu zib;=!Eh=ZyPaVZ@4?i|@pJzWY;SzF8Exv`jRC4dSxH~EM3?f9i^^0dB^%fQq0FWq} zsGXOvPZn6GsJJ2*pOA2G@_+9-Y0C6_oy9#j9q>U3k)QDX9V&Jf2`iq>v@gmI0>9(* zNK6$9z6FIm7AY&w2RJ4$I%<#-s@P;^${V^PAhO${RCBA<<0ap`Q${wBNCzj9a8e;` zBam=wnNp2Tp_vMa)j#%aLwe{ES|p^>cMTj z*}@UQkV7*-`nLA2DiN*H`x{mcoQlmo-X7J`&z?}*|EF)KIy{{saa z$sJgx7l??^<0CxKOiSAJ#3L~gB&Z^YYCR$_H8EAq8u`b)gwpL!uyVLf^1rAJ3xexr zFbwj=`2Vjww}D!%LKQNTT2Q^+NH#8i2K~u7N;M;oalT!;CxK1xAtEcj4P1mWg17M( zuEbV7cq1%=UwCW5zOIEB*r=!{nR*=T^TNszzRK)mYcWy2y@KrjZ+Tn_!o+LDwwBGL zh>0I!{N?ol7FTxc>|~0)+a#8}q{HKS+#?F|^2%hy#M#7%Gvj)CJV?Zf@CN`=ta{~5 zlHqYK`1fA37)vtNkv@w8_r6LDJ?wE_FSs1v-g1mfyZ;LWl&c8_e%wMft@hx&N{_|& z4bdORr(m!Ov(2eU?;}X6fjNI<;7`Ez8PeCPy(yzp*NXK7k2tpTU<9@$#eTH&W9*Dm z4{c6QWlC8kVm!rVI`~lx8(mBDWf3)5aXnS}VvezR+{ zOBPT$7nmULw}dl(yVjeu{ktP>G&bCH>_0HX& zNsn7|!p3u;=>C;PWBA0+%O_-l#Qk=DRM+OBr{<6jL1UI~Vz%zFJ?h74vVol2 zNTc&O$&mZl?A5gJHeZ5RfYhgJWA<={B~N02jZEXd`rJ>;M4SJH!zwbp73+y;bYRrUb?E8!iH%o)X*pv@|&<1HzNzb`=c zm>>)deDNp$(3vAhaI@!5Sgrd)XV7^OC>dRNh$=q#oEje()@c!;@^kd%vJ7pA`i--x zA$R)U%QD(-;^1HvCsci3gzSU%s>t3Czr>*j0%+ADtredojAwm*=R;7#+7IZLbM%=R zA?qOMiXk=ec~MIrNp{bLSEu+x6NkC$>YvVM;j-pl@~6AW z&I**%tx;kaa=sQ_9;yw|JPqlsV)2n!s9<|IE>)Yf@YNNW988B@zivrIGZw#wb>Uw_-v=UbR%v=W^o#KS}9O&dBVSts-LEBD*=d{Apk zsP-!MYfVQSc*Es|D72;+RwTMn89ZY+7|PoEFX7?MpOeE_7X~?mh*PCog_`4msFWw> zK5T^SI9+GEUxS;0_`+#>@X0FtpnJjNwXg>*{2=YC=R$Pxc1_vF=KnDAFEC|Ocz>Yv zvoOzn@gZG{_2R%yf+e{qweQ=&VFl!mGaXWjwfL>>ey-n&_0+zMWtc5MUaeXE(|sj* zpH=XESm_*Bq0`j<=iHLB6~Aq9Kd92J^C=%lTURr!fN>v|n6_sao)NdAO(VVVEbTdj z8%w3EMDX7l-B7C~_E7l!+s=;jZ`W7f}&rlYGK2)#7>+5l`b&^@`n24-qva-Fts9~zhi9p@H? z=`?KIt?gSEE0Ru6y;weaWxHm^wlIeeOohs zClmYz*(f3Y7)Nq>5$>EIMX>ByHCS$y1WAsC!=w?P9b`sPxn#p_U>;cv#u109F`6n_%@hNl#4#X zM`=66lCjL4DXbzw45kegy@(UQ|EH3n4*TA1^4{t}+c>8i^d{0UV=fssdvTnrc4kL3 zr0@6=nEH|;C{K(Zv0qErbNiiz46M@pa;$Pz56p0HcL{m$bQDsRP$CICXz1Q(xg%Ww z7Lv_u41@^`LWLzJUH`>MlRdgyNpoA=UoR${DlOJcb^Db-sW!HoUH@LQF8^2+|NnO}I+f~J6+TXVMRk*Gp5*N+|wMivQt|FmUZBHo5(C(ZTUSXwXsTo>!X*lr1!0lDxxu~Ni=x0aV zBCX7)spcR9hn7%SA*3thK6HKuxN#WQtQ(|rTLHA_bh*!0{hA&gySgRxJ5H7@3}>3J zdn{F;Yh>NlD)vlGcG~Uq6np(8I>gIK&Y}HZ zd&L-U@h~XqvF%H&4VsggtwzCn~SB0W|>(TBpFINyc-SeJ<)+MrSl;ThvN+C7W}mnf&Zan3hNsJ_F`R01CB9Jb@y3{K>GrsO=2k#KjB4|H zE*6?B!V9LZiCKK?I#$cq#wET=t8wsH(WK0U?b`?sUvY8p{bLe&Nth!vHVES(pUlo` zymQo$3+;^XAwTX8TldMuaR>vJAIA`=F3WWZZNoccmXjMdLfaf@f5p1^G(JH0Wb-a+w^G)nLJ#w!0w(8<~QQfvy5_d9_4V zugc_A5Bw-;&t8ZDc`;P}$aMdWS+j!uE3!jd{42if!{u^GzuBN+`C9S8!+YO=mB!`I zTzEK>4ztCitLf(bdN!|YqfYUDPT$O$7fFIwZ4@QkyFf_QHAtqbp=@(p@9H8!zfD=( z(pTm5{%q|MIu@KbrG2_zOJ#J^h*qPS7M_$N&Q=0jsX5Nu^(>$D61QX(ifyb=lXjyO zNXu8<;IAQvE}IHWoDsqPo(q$%WcAVbO}wc}g#VYeh6F3HHCPcgE87HC&pJjuzgV!o zT~a|^mkyE-(78VPLYfJ_+HPHZ9*tt?43st2|Xtd*@yHe;2)ZbD``ed26T!)FU zA*oguz9@v9!&b>s@P(hwWoBc-B}f;=9?nE6gBWoQptb)w&<_2__9}9L#u--Om49f8 zYcL5pcHb9K69Uc%n}yW|%%^I4U{__O9*ZW%O7DT?021GvIGc=o-?Ubm_=BOa(}a+( zw0_UGd7oCkzT|xxX_Dn-ivWc$-VZ%8!NJr|lgD?0N+mfyVj@v3}RDPOY zbmUOz`qWsay~19WbqQiHLGE6KsGy|q7yZJ|&GJmjRdw1t^SZ6(vIVLw%kF=8x`a+E zi_G1e@idOFqDS^h)>gacilozrLnQERWniIRBPHU{HfO7;@Fxb-Rml?V^%IEPSK8MR zp0uFX+X7V`#PATP)TzLJ`l&~UlhtO+WQaI^W|*k@X3OFr0W5Td9n^3{RUeC|n*SUy zCmQ2b;YAM1|J`+wCf#ddp!)w98YVg˹PCWOipiy_9za=y&D(Dkb*mmzS=2O(O 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 z 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%0D4qEf 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±1s2b89)*#xp^`cV+QTNh#$-?CxJ81wpQKjvnLj`7Z(#33f9J zu~t+njbXLQL9QU*3ZS?{nx_KER{Fit3M-J&<%D?5UrsVzQg=dK+lXLYR-I@b9Z}Fl z6-dx!6=>)hVOjH1J!myPfo4zLi007|1zl8ugf1i2Gk>B$^HvW+U1te-^Nr{zg>xal zTYNzQboy;F8>Oqb;d&#yx$^bEmi4tMp|9$T>YaIJNJ6y0`iYGK4gKexk!QX_cv5Sk z-qBM}joH}|1Y`0_=gH=sLOersE?2?}r+s&zt`4M=2s-oIEq`BB=@M#bXb~U!xianP zCxy=yBXtk5)r8_n7qr8K?m)8CvjniZR$IPzA({T;GDQzrEkt>!?R++Ev4#29ed#^$ z3=2Y&uIhCsMtlbv*cz10wolWy!p)Q6l|8Mm8oJ+Uw;x7+S{vbFDO(@9wAaiYhFVU; zPU$sH@=YO(>L#|1sLvk(skW^7r^oX;;azlW20sg(G&EZ za=>zKUq$f%^$~52KTM&g*_qgXcX(y z&w1SEBVh{AD^@myqeUx~&xm()O1vFe`o>FKt7^i9|MFK>LNA!2<8{oQLS!IFIZonJ z4dNwt7%>ylJLNiy193+vlxw-2MI`&IDi5TQdZOSx3dJ zrO7O-|5}kPDM}n<$gx=fd zBAradL(br>=kbb=djj<+)+#u=xcNdtuQBQY6}y2-DSDc==dESb$K%$SEQp^BgS>b@ zqjL1l9_a2UKz5LAsKGE-KnS!2K-DVd2yY~QhnxZ5E8cUMWad!391n#MBQ9lDWsImv zLP_j^ikY3asgHfL^08%F_!ZQAKQJQ2iKcgM+BBdrohRlzHRE0Ar9oLo`TNc2$1lbP zY>so}3vg&ukNmdv4Q&YXztu5l#mv)UIt7Pin)P1K}I*x59BAaHs5rlsQw;xAmhm(oqUv$u^hqA^JmXDw_(I63a8PFC=z4zFRBZ z#pSovU~;NY;B$uA#1i^$o8so)5Q`;qP@G^Beale-@B<`xa^vNtLt+JRP>##$egunN z*6O4;%wMq_bwh!9-fRfixDs02&NMbu-zWy(fcoglW$C!Dcw6L)p@7K67B#pe981CT zQ3wN%`aw}}*s2To4gxC}>)ZR(k{a(CoSegL#55gtbW!2KuWWtJLoUPBne$t&%g<3~ zg4tvP=Ci()Tg$v<}De1 z0EKOG`pNHVWzJie7zV>MiX&Gb$*&%5>r2BC5oD__=PZ4?sNiX{j?1-T%EtcSV>3st z`i>;s1%)}m8N0CMB4&ld7Ri%$)1hIGLi2G?iNm_SAo>ljdun-Ms!4HvpYrqr@+IM1NwEnN))Osq~G(|@2SOk`94hk5Hi6Yp&VcD+UTdmSgyR@v{M6$ z51WwyH!RgAPMgc(bl~eLj^kpPO&<={#7PavNDMQ?9Z~wFKoLDf4yN1|pxzBG@6xes zJ9)Z{iMJOuU{RQ5waSRdkXGmwSJ7BZbj&R1xP{1ndSh&Pr|N5Tn$Lo}q$l-BR!&9N zFiuj{=La-2CnmnYNHp|XJy5iiy5u>Xlw7x@=7BSXViE&%GllnUW&0dOxwe{cJs&A z6;7(*#DPoiwgna`_1yc)wieL&_6*1S+VD2RSm3-~?)@OyS_5H=nulP7a)?~1iPJA* zYI$tb18TOeja)F!x=II{2P6-;y$k~;BF z`bVgKj0*n)P$9~kiGZba!V;?k}{GA zp$N_hGyC-eq4j}3_7}nd9Jb~MVrzTZ@|T|_bFnG1IAhc3QIN$6LUuePQzEq+npOcT z?C{0=EKwB!wP9bqZRcU%3B>N~^>)<~3zZU3$(@u`O6pSjb}6N-^+xGj?vj-{rCwdS zODUzKPN`QPlBHAXbV{}LZSA==Y0r5prBx$h)(3O=71t`0gX(l;do|+gQf2a*>R6xZ zQeBcZXehZEGkq*yb<$}+T8~hQji^h?(4=H;%TWh2+n8*(9CeuK02L)f59mE#ntZRl z=<;Rg{uR=g~q!Y0JE`%<#O#U6v5RQ;2ZC13~riST?6#4?)f3d zyZVCJs55JMSL-F?|GwY}8ay+)WU5uttptPMZe6M2U5$fdNn{aY;9Y$)yV|CUEMgXGtLy%>68v6AqqaXcG}}j`0XP_)x{Musqr05^U9T>)ElcTU}PWmS$GZ4&C;vef$Y&nzUDwTf4S)+H{&(6|9)< zn)-z1q$9 z+nDtsxPxe-FS&1K&Fq#V5-BJctX=JA&&J_x($q!Pwj7a6u}8AamLn1-UF5puh=d0c zi;rOWp1S3D1d1*Gq?C#VS6Z&=2$%2_f5ek-wB3496hcJjR0(Tgb8N%Yf zI%7=nbE&bb5gYU$%mWVq2qZCznzZ230!+lVh%M$0H?gr6g5i%jAhjS61Jo8-#A1$? zXx&yTxvxT#`SJc%EA*Az?rth<*C=iHIWD>Zt}o-v+r+3O!k3MX>x- zryx-QG;z$WApM8s$r_) zPVVA)3@)hA^EzD9kmV0~p({urpV60`!LVm|J&Q4q37~dp{LagH!3_C-es-6bX-rch zcMTB{T}Qv1Puh1>CUaN{L`4wao554vy`=Od=tP$EHN&Sb{P=nPtNx$=ec=xIVXphC zyPq8nwbwy2&|)px__feyPnlj}iv*(EgI(+uP$e&0zK11u&wVPSU)&|1UJ%k6n)Ybv zE^o}<#N;md^r_PvM?0l|I{kt?66Ssqf~@clmw|qU+|s$JhNRSOd!ghQw1onY1%BHYM1}|YaF9vOl!yVE&aNeKyz0mtjXP`~!!tL|c zK|Ngq1N{NJL5(v*@%tJ-zYnHtbN>L}UgN!n-QN$JgJXX}H9{YE&F|5v?^IroPW=VC zyZSwp6*V#Wi1RazayAr`OFnK6%vx4c#%A%X#uRVQ$fIS}pdxjbC*(PZ3FJ=D4r&S*W z^d(;i2YS#4PoOXP90)89(&pKcMK2n9N`(K6Zy-Nw zKk^OatMrul2J&r&SSV?nku;&?I4kVOQHA&?X}fC35=tceSOwWwtI{#pvJjxcB5u^`w}|5HUYpe~osQM>3v>_vSMXBlr$+LDPaM;o@--Tdf_sqI-d2X5*D z^M;d9#eb*|?}mmfM;os2AqtZd5l~x>L`3n)H0L{6Qc^{TGC~-wlF0IB2lPj^)@qwW zMy{a;>ZYLyN*>1b;w~>Z?XG&Oo5#6%o3}|U69uwhY#G~B#epQuLQTmMb!JZ-?y-<> zLMyWg?Nbi2uLic%1~ zOLqu}+yj)nGUPO|P^~Jt<*&tx+#m7B2+u{f;nWfaMS(66`Jykw42P&a+fn-tZ8NcL zeUxC4+#-3nb49kHnD-A0bwXYGmO$~Nvi2;V6l58FQF~)mc4Jl6^^miWne7h<2%sz& zJKL!uixz6r|3V@;Afa;D0<>?*_3!j&zt#L%>Pw#3o`lYNUAdEO^vByG?yszJW! zt3D4@MeYK{A#i>Fr_D)s-=Fm>O-(m*)_66a(0!WE z0n%L_P^2nMOxL;~bK&Xc6H=o6EfTNMrmy|?c1tWTB(Xb9*DwAGA&V$?ePNX?$wj)D zQBhILh|Do}7BFtu;ypsL9Ub9(UwDbk8?s1?l6LIIjB+d0)h|^0gdB{&=$FBMh7zUp zMA9>fyI#C8p)Z_CW3rA75?S;oPx}>jF?p12Y;x*PI5|n=qnp&ZJN?`*x=8j|#ofAf zrV?b)qip&^L|9rtvc((oABm*}qfP%7xkvZLW|a4$wI$C`^!io2Bc^q^TkNVkFKE>p zbzxWC`3y6MT{YgFb~RkJ7Db01qHI%j+BAz@b`B9}T1R4;qRFmWb%HTW zOw`>2?s)zqA5%)Hm*>6L>fe=0>9o>H>)e$}mx6%(??v!meK+xYFT(e$FY;yQY>7n# zL%XY9O1B`;J@+DXp$O7$_^g~06tv#phW6FcRYLJU-5FG08e)Xbc3IqT56^CBP z!WW)EU-efZ3G`L}2ASM_rB&na^hQ%U1PP-FAxM+duik3!c1TF zyI<)b^5a1h5`AHiCOzzPA0!N7L+*9>jWDvd`t9-k?6a^6pWYyowWt3+R13AI;r6eC zs39D6IRdgLr>`(?FW^_#THqh+0ShZ2Q=R z;s3%`3P^0iwr{0$kS0C6u$6kRmD0Y4_xHaLfA>JP=XB6c&m#J&H^j&&NHTT@glr|P z5F|`{Ad(3dg8L!RUcx2}3-KV*!l$nZL)wJQ${lsGr)V;97u74|3CIz$oKM@&4X?5X zTlAq3C=f_r^fAsE1iAmsg{_^Qt)8{mvzuo*&vu^mJo|YzbOdRG{&UImabylh@@D9` zt=i)6)(jbNHwv>1yTuwk8I(Dw%TLM;-RHgQ^E&X~Wve4i2uv9FG=^Pdky85=Y$EgQ z`rq5|`yRE2{qOC6ArJbZB71P>wA!oTjqAKGrOGraD#?$!t*J%;lY{$BlLH^;jV31} zU9*}p8o~r~GDl|q<44j(z4MfiiiVQ>&?C}CkDMNPV$=5~dB)4orzrWz#>;Rrko6jj zo4JqfqCOrS*?iZ{PY81?oV;maYd+17yThHVZ$KT+-L18SJES)KVm-GGs_A|J8e#Uk6pajiz0w>~&BY9YPjRy2lkYTFg6)l0~1WgJ$c-I9!RWJO(X((|CO3urSv`GDi~Pw?Uwe^* z(zq;W^xR!bwkAz!KX(wrkPq#ALierU{Bo0~jzT9kCF8oPbwz zI&s@|%4i&Im2JEBeAx06l0sjG|Agj}kCLjr zYZGSJx~&`T_|2Vj@)yU^z50Yal++{b`z(N-*+D*_1=4( z5;;hd9^R)uNcZ0d@jfNvo+uDK;zo*;^U+NUvfUy*>hTpCu%oGlw82||4#|YU#KMTy zK~NBPM&|IR&y68-&`qJJmoZ!9%CNS`Md9#~l0_eGq}-Fpjhnlg%UkbZkJNh~f`k#V z@O}3zq~3cWN%TdPHhr2Uvgo4*(ga8drxq+B=7^yoSQnl^U-V@+oRz*{?bT}Swv?1M zW+-4k<=!n4f!*a@|2&S^2}NC zv^LDDOF#@(*- zzPfGrOHquql*%>js#4$hE}y2cscAOR*O+U_m;IEs|BV!AHf;dH_d(v<&nCxCflcrC z!SC&*-9no^+l0(f-%i=mO4;)5lP%u@AuW;=tvAMuwlt~%Ml6;n-5Tkezv$0 zPh?jG7tF3-0TN0$;RgsP5coueCnC_|rA!&HN+dSh^=HwX)t^fB=aQLSRlB}q`kp7Y z_?CT>^(NLQo=i3J_g-$Vn_8tx5|t;8T70>`8qTY*8p4HY!McP-_><;v-rbFzjSG&vctoAB8p4D@TeYI+LEu9w})hRPPY(Z!pMq)Gbgqaj{X1MUol-b=Eg&8tZU&OGh z{;KARK!S-9m3_4*#lCv$sH{doCd|It!&iLVXI^`sb!zLOYJ4@`-K`qmD7)$!Yh_n$6Q&Cl z(?t=c3{Onamx@9R54-B@#1WMkDZ7eMf{KBnim`$d!^IU7rHvsPV|2&(&~e_FC%YQq zjXA-tQlzkq(V|l2s%fB{phCI&Uj5A|_SHC2ETILH6(c}Wx1~KelU=o)PpXXqO3JRf zQ>r3m#jbk$a@fL~Q7k!(QN4OMBUejuq3muuf;%#$>yB9IJnuVFMM`xfi(NH0Lu2jE$C-p4) zS){0YEP-N09&DQ@eFITO&FBy;>^Zd>7_t&s^(!LpQ!ix>t%NUGZgIvwsaLWV1XQZ; zy$_N@RVcz2df^Tol=BhPb)63K@#%gm!ChTQyRH+t4{{d{A0He++_r5eG-c}Y@>JS< zE7Qpy*(67qrIy$y$mR17N|`qbC+un;3$`!1wzc-fpdpfJ2WyEQJDpCMbw}oy*&b16 z-68k1pr!PF)#3N0NbA$OgDKBz{rwcjJ&+U*MJ@a-1m#wxI#16K43c^Y3*x=I z><6TY2;X<}Yw`F#1PS{>5x!XyDvB_|NEv0oypZEsA811MeJ1jJr`xt|ukrYepFX&4 zo4ba+?3$*9Be;t;k#&qjL{(4@WzDrSk_Ea;gC0kKhpj39{f9mcTXTk4`aH&x$;_qR zjL95x_TUm^j=BA<$8PA#k&%vxvKPc7Sq! z9dbug1)S`vb?7HFf_xgsM6s)8-A@QZkwuIGg&~Xcs7H*4yZi!FhMBVXn6ykSbh1Fc zW)@Nt^UPwNnPF572+jX@Ozxtz%BI$;taZOCmC8jLW#2MU8w|^Kao5hfuxDfQQ;RIW zv3VVyLnXIX&w3g^S)ONEv}4Rkfh-dJvR_+bfnjNP;B%kST#kIDKJ_@Ml$1774@H5b zl#=4`WE`HH`kL3NNqL@!F{i~2cFMgFhbPzQ_~>BQeCqW_CAZ#P)J0$Pao*;C1x8Me zcz)A1iM#0Y{3OHuoaO8;@3FhQ2j6vdmkIN?8zNb}F)Mdo($J_VMt52_HDvE~K1V0Y zo7plO)}oM&g}N_neek_~55Ca8knPvyfsZW;*;D)2o&I5W4hb-CZ0}kJ<0vH?CDoP1Ra+(83V1m<8bG6S}$y%McB_eyz3E&y0-aDuauCzvdIVU@Iq# zq#v3}fPHTnN*s_u#=gJ$gf1vVNz4W+URtQ(i!0VjzGaZXBuk!>MSO;g1B_wB7BY-> z{T}3|X^F1yN&P3VuKOZ4ax@chnDpz6%Bg+YH!tf%! zEoXe#^}WmjcfQA^fe(%rG_mVu;Y>^+~}89G*PEWr;9iFcI4-Tg+gXTfZ1%*C#Mg&;n!DCF%;7UBgha>*Mer z@C&3M9IU7v<_$6fwXNjhg^C)UP$5GJBUHp_QgOy!zK@IceeaHDxa@mhb^%wCOcHm; zU2~FIK?|8GXpo88QU*(xFB9Gu$NnG+q=UZZwbt4l2a>bcu2;;qn029LS1!C*V%I4+ z0B17iY4r=FRn*fM7CbPP#>g<^i>NV9bi{~_X}X>@O^ZUpQAv4B6s$0o#$Zun2I>m} zJGsG&wQ@rk8y6Yeay)vW4#_oJjz>OZu;s|Z8T+zl2nL=ore2~GX?p{fw)42VSB=gNOwis(2M(yagI(tb0;QGS`c!+?PL)mg zsrn!BDqr*4*?){bFst6jZX8C^%6Qm@yg-PYf54p@Ck$wR56RBlGlN^zx>(n@Ki+N~Ej$@8V8 zQqtOrVM(Q=by|;N41!Y1I;E7E)=HzeRaRSVwMli1ImfWJu3&493}a|cvr1Zl)LQNQ z2~q(RL|@K94{2+V`ZlHio^H(e0(OY8n{qM0Im5`g6T_z3it>;PwyCp ziZ8}@iy^PJ9K&GIM3^krg)mKQLWDtLe;B3D-}OB%D6)IQDA}MG`Ab4Uf~AB(x+ka= z=g%3}A}%Ds19 zh((emD%e2)qYAF*=q!-NEWX(Fcl_tZ)=K0aETYW70*e4Zyo77GjniaIXmI9&K%z-v zr5ajEkyEjJ1W(cLDP z3Y7&SN%NuwSDhSP7G<(zSMacFAP_@X)3%1E)U>Z!h?7S8`h>8gKv~oN11BRZ%n^M_ zJU{2ig(pZcULv!$9BW9bN#t+Kv4$gR4Vh-kv4$qR$a%}L1}?M)E;jZy4nMnVk_o|> zzhn_U%1Gb`P$c zm@ThR`C^MT#CzKw%soT#>vE+8M6gyXt(E#q?4j367vQexCD0euNT9S*dbPA6=?FZk zv^G7=xS8K0dB&FGmZwWarm^L?r3fyzn4pO*PVAX+%MUb)aSM_yMJ$gkM%HddAPy#4 z2Z{`I%DkR*0D#Vum7khje$@T}=TMRQT5_ z!?{TfM5j9F%Y(eSS9xuxWVL}!@?4!AE zULw!$YQ5hFcwg^3Ju97`Z^d<1Y%A7MzGljsK{n_H)u1lr-KU|ZMh0M5X+mV%dUW=!VTyfe48hT4!wxApN~&5~(BguYSW63$ zdBO|3{tpmT479+o>(3%oaM4L&O(iXf0!^eBH70E-$~{8jKR8G?Y3VXGaoPU&${qa& zeE;iYGk1=N0)r3BgKd>eCe33?hnnn4KpONB(5*ISCAfh4%nA;^-u%qN#c8YYqt2Lk;i$}&EQI8NvarzD_cVI&3<*eT=E5Y|L;!pzpGv2`B&gmiRt zoRG3@-sW#UAsg^*J|VEE$i^nm0M`8K6RP1cj!m?X!43$5W0RE&%H$ZW81Yu5U}U05 zme$lM0;zU2?QTP4o-M~1oRr9P%P|HrD9GNHV+>zBF`|N#5g4|njYeqLn)aCWGRKF% z1BvW=s*w3hLSY_N%={&{n89&|FBS(UfeKUSXqzLX6uEI>(_w#EkVqg!#`H>;^v9)? zPN85A1T)3%$}`NKh_k!y+wXvEFIOKhx*M{))A%C$yEBp9{fN%pe@}^Vby+C|9ZOCS zxw2kbEC0&Sgj++5EIy_ni17mE(So$$0uxy#xst1Tp4uS_FI^5XAV${c(xt z_+-r+R7xAUQt#eMY3Lw$b#(R%-JCi$WcgIi>C>ZOW}ZMw88j?`IG5Np=iIQwKCbmK z)moq4yfK|pim9~?5VC8?ft&rqF5!T-zoA&4+kkBR_=Xx!#rlWuS~W^3Yf}?+9rhn7 zCkir^&O*n5yz_>0;B(&iP1>*wm>WwQZsrG*T))ydrV@m?O`vak=8gH-e+OiFxQ61* zJ8#F>{iO~sqN7w&DxbXM`F`n0DW%h;z4ztM5X%~3+@ofwq|KH^F$)!y2mk;803#Iu z05A{?2Sj3_KqyTVQCK?^01j}RMsipi%7bAPJzrfYjvG`$nuN&swuz9$;zPJTif$u<<*6OHP4e+5!3COwe%Qok%3XC5F70vuw`R z4JH^gZy+BC$>$R*v=x2k?0^jN4!qcea$F9;Qil||Iz@+rOMI3y?lf&sc6b`q2T}*k zJlzm!Q3_|nU$ zyTt{*;OZrY4Ebf5_%M?-3-YvWw61Erxg6+7F~~L0P^{yqB^Lbjb`E99^xe^`K?gS0 zKMDm&UsFdm<{~@*Zp}&*Wt5$Y4e0p1f%C=!3Q2n_j}lKlCqQAI_@f0V|KvgT!N`&b zQ6Q%thEc2eoHNL12vEqQ<&Wmcji^-T7tqiOFt4ejZo(aqS{OmFXr_ySEEc75z86Xfn74D6ICm_Pi9m z3_}DDqh$(F0`wmGfeYm0!|wWw4{q2?r?jdECWJ5Y;Kw&bo)!{*k06<;*juGJD0YL~tH1tA-CPFaOq=S38aO=1<0kh3^mow2BU zVfX~LU=;%6bc!{bj-rn_QjE&)_6U)h;)|v6pCzC&q~hW0z=ecA#XJpmmF=86DrD=4!6 zM=h}dp%0ni`9pt-(3AHdJ$;o0PKZ2$fgdvB;ikLl;|T=y-A79XOOx8117LFo;KsI= z;_<>Ih^Kv`g#$J{o$+$N&_NZzsW9A zq@UfrrMchI3t(3uwM*OiL0+uuB-6Oss1|z=fVAJFsPHV1$~PjWcgr`CFH7id8upk5;1Yx|Hyg(q zIbJOhJyeIH!{r?+4FdqbZakm!6t)lDTBtmxR%dN@t~U2#8qn;@WBS2TFQHf%PMVN) z1Jl=wtWUz8B4`=JFusbEV@ixeU8iIwy=ww1|zy)JCgh>b{VsIarZQ#VHAXz z5Mvs!9i0iECiJWwml=vLg&?gl2eV5T&25>u6+w(5Xnoj86ff86HTjqm z;uBcEOxOfek&5Tb278|=0jGp)nP5e3PCXp4b7~g8Tbbzz-`?_d9&?VKTFY4*;?o8d5)GKv z4NSZ?qj@KU7A92yDqqMg^)pF+b;}i??sX~8wr<;&HLWt|ZnB9^2#CvYvA!jobE=ud zyZhA=M|r@|{Q&wIP>>wuA9zwZiGOy|2+0vPXQucA>hwCmy`L@U3pw5%!gg z9Desg8F>3D7!%;Cp6HrM=eTm9+HeA{W&kqHFdPXK&QNZQQ?2tba2H-Lku=bZn-QMr+|Xs37!K$Esi7|i+F+nYh8Al?8hb#ns8Dg)yS1zVhz zqH0)m>FMuhZ|3?p3%~|3sVV(7&o{}Q4+t=rNe~^SA-n;ie$3>X689fkI7UEA2h}IM z8^CeRBmsHt26&aAm3-Uf3I`bGUHJbIuGn4s8X^azWD4Udb|L5n& z@dCzTkON8;Zc{yoeY%F_*tk~A# zu|1;_jE?`HET{xf3^fYgj&8ou$^H%iOHiq-F4wr@8r5~)mxJ@8k8*uFM7wII);wGCfQm73!7@QS>`wV+WLTl@8vJ6M-IG`UZs6H;7t6W>7fp}k&gp}n$)Q- z-@o$>S>$tfBPs2IlHk81XdK47HT6%7Ik_Q^tTLC>T+JP=J+H*u@Y%+M3i9b+UOe!8 zc~V?(HyV1NlOu9Ze^j~}Bgmm&W&3e+%Wxf)I1Sa|a-*#A6gYEJyCSSA33jJSnQzH1 z`vK{MaX3Ar{1PZV>%YixylENK5T6(ncp&xs2zgyIUcVU#3Mi~4Kb^Ux8bk9wT!7{S%UE_2+^h>T}RD{dU zC`-=re~{V5ZiW=70D9mS0o?i|#xvxd<4f(^e_*M$Z;A|O$G|v!DQ?c$80jIc|MraO~f*mGdb|w zIJ4%UCe{XkQWU6G$sA$ug~@?F8-|}fm)qfxGDepel6`m>9SE3 zJ9uq3X$+W>K`f-YVMcqbVNo+wn?~EdQho`KAnT96o;>!pob(vgisGij5?tH&$-s@d zQz?Y{L`V%G;Xen~*?>IxrmM=UgK+$K8$Fd1c-48ktk!swYbGUDW&SvA9NY ze>Yd-n#o``O0jOpw!yxtK8M}E_0XilXkkY|P^jXNg-H%rqe)@Ux7_wbo(0R(@R?9- zjz6%2kqrQoBf*Gb1|x}-yuYKx31hsSpbZd4eAjgksjeY~cn^)wr`A?AWGZUNG|RYZ zpuH#$Fjhzls4zM8fJ?*$(4h6v6+ICpx1G?;$!vA&!v$u%+K22!h_s2&|9}|fl(frXQj?~&B#$op4-X?;)OC)sjhV!06tj0VyBL*a zf-yB=P4qxlT&z3X{zbwp!+`R&w{6b~R##6Oi~G|oKdrGU3bQb96k&eH79*ijZ)_bZ zo6#WP8{-WE`#5nFil^^4ix-udJk9RRL>yN@Pl>HXh7x~quoIMnZ%jFEvjJa)H;L9- zTN0R61J-5SQ>wDS@y4oB;|G+o5(LGyIk+ln#g0!~13|UO4sH0#h;wEhWilaUR1him zDvSEuY=^VZIHok$=Mr8<7JT={h@Fq;VmC9&nZ&6E^>-Qi^?}=#!_MNWZGyPQO?wg4 z8;Tp(=65uK0DbS*yQIz>_j$m|U%Q4&R*R2rc68#bJ448ULMubR`s~-U#xZ%SflAd^ zs}4(9ay-PLbCXTz5)(Awd7K*NG-BE||CDC9%_a$(!3-$p$@G?HXx;<8AA~ZXNG={l zBU*4sjRmg?)&|%c=H?Lh*!~pZA=q(X8Z`s&o)AN{K}C`%Xc8XdBl=$wNt32=)pW>* zN-TG;ufS*kw$31xb0#0uHyU7v09b|1&-F(ekC42ju2rxmeV`g^}jj}DlC zBjPgPdmS*25Lj=4gYK}o zs7(Vpmr3;QIHDP0f&?#^U>&2$9hYY`j2|sF9sN2qT?SIyMlGv0cT=u$++{pYDJZ z>#bB3Fv=aGz}mv-F`42W`U5zQ;Tkw8eWTro<)?E#C?}M>|4GULb&&vFSyDqW}heXl0*zBaPaw+Jco8MSF{vcU@Yv*sh;qR^ zO7?03D!6Mem-d$Pof-ruwJAG8^S|}bo5!>KJ^;Uf8D<3+ngFx@HLhjLtX+{ZmtdsnGT#a;jfqDPuhcxC@Yj zomR^2&k;jqa?zr-0j&45S3ox)W)>5ri(dO04Q~|M=rZ;HWb`;()F743>2>Mp?uaHb z^0+q;ut!%`t*%v7Ggn7OEV<_Ts`xW(zGf!Xu`t>O>C_;}(XBhL7iZ#Ds zA7>%OsC?XhY@A)F)H0@ki>8xet`pwT23yf0%BLpvbO!`GJ1P^_2w`yJ;<5<6zbMg< z?eY8$1~o-3GB@@Jpx20s`>@~KqsMZ{7#+MSMXt~6F;v_U$}KXJnfixmi?ZiPo}Vud zXA3R`Wm_SaoH*H*f#0C5+7bP#(gGc`5lVAoU>l!UK0u+SG{B~RmQ<$dEm_Zic$^GZ zqczb_7D3=^ru!*+M+ZltYlCl+Iz0j)5wB7j`8sHZr?M*7Mj)uk+5&8+rNGWiiq!;> zT7YEoXe0HEa|Laue{mE|OL(mdWC@C?d>bymglyN6rYgyw0l`e)yt;gpV9d5B-YETH zga4@S%6`9sRfO$YA8n0)h z720y&r?dmyvUxFnKHFunl0gtwqf3{7tzeaKm-SFE01B`!8}Mv6@2GEHn26@PwgX-2 zFXB3;LZ|GR9LU?dJ1>pX{AyrGT6CoW8P<_j0=|0|*iY|08;9VOz zxe#Sdr-B^$*K@Zd7N`^ttT1?KB^Vg48}biyJrExixt>?Er>qrzQC&YGarF{9xjr%h z1At;-q@a%?q4-6Xi}Am9^XQzm8&=65|L&k8fuooBJAU`B0a^)z)(@It^KYHfLpT>h za|%xcYu!O(X*Ogav;=w|9HCIXF2o1Ziy8@o;FqNN)H}_l8qH44TDgvS}I+5ELNyS@QZaJW@7E&QDC4ywt^rP zS;*jGV=}DD9HzDc5217n58{eL0_@X2QizDee<+^FQ85ayInjXp&hp_PO*XRxA~A;% z4YspU6TA9D+7ghA8wRONcYjqn8dPv1wU%pUmn$b&Y&SBPd$M{F}F@Tjxga)zW0lY{Jv!(y!Cm zLnb|9<|gL_GS2d)1-6i+NYvmLP3Uyv(G-%$4WteHUTEybu!w~WP&jt>@x|8>mhP!zgr-W=cf z(c;B&w|DZokQvrJN9S&@7>HC{S;L$NUG_+PL%h?Q-x0^R9X!#of_%P;bq`>;4?ff! zQ;8V&VV(PbDG$e^g4mp<;FC+nFVMQap`_*NCI^6T|Fhfvdi41Y(1YS6(x06pAOcV_O@V(L#BxKPsoIz}^4p32OVrFEQ|LrfkE8|7W? zMO}bb7k&i8u+=ycw)Lb1iDLfT&2JZWYKx6`!6s+xE^);*Wm(Nw14P>jW-@{+gzxIVV^(CKBg}5mj^p;~ zp&Ya0c(hpWk9zGd5QiU996Xqg2&7bmhGC)0-6s1UCL4py&4f9E0PamJZ`c#=!Wot-3MGB zc;Uuj_QHyTTi{uI^8_q{T<5QBVFG`CAMBJIT4imWwJ+`oh)1467d0(~vhkcVz_~6A z(0VX{C!iL3g`kO2*1IznRuz=S;Y^G&92NA&yY|J^8E}lkwQNO{(TBwX<$EgCo9Rgz z;D{(e#{BDdhGRW!rUZg++2UtWToSW^GY8sjY7*u!gQApMTmU77s1D4{r%%@g)sEA-KWE3w zqx3u33xc|*u3bsH`ov)D@Z5}B)4sbkoU#tlfVAC9bqfz2^IZN65K?9;|% zB3p3--LzEdSvK2NJbBs^Q-RkN_jRM%Q<3XCZn*JeZC`Lc-4Q34`1YVs^8ZmaN-LtU zF>Lf+WoiOcRJ?*o+5bW5)6}$D?}8a46#e?Au6`e64=Ys%aKsCyxtpaKB=yFKiQb3$ z6>R2>LkZu*lRrH3!<%{e=aWU#I6+bpavW(b!kvCN1Sv_EKzehzZt>)Gv_2)vBSrT& z-PARHpMH#m#2M5mg?H!v96bH%ab^BE&FWSdnAHY! z=)CgWRx;b8RAYRY>I1}Eg9lsA3227A^gD8N%(!HMX?Egldrvpn_z(~%9%+gU^|<9? zgF|aFC2wPi5AgTzpuM6 zmNJDiuyEO+VU~~A*NyM)w0<9yerZlJ;^7e}) zH?hNr3Pmb|uDLEkMn8f+JYQFk=4BIF{t_w072aK;tYwX6&XARy9ed^~&Jg(dnowsl&zC*sB*@MLU1)UC^bwx-Q~O zH3h353+|y%u&X1M#zZ1#ibZj%qE=IYGj}tdBBWRh|7AbVt{4~{epP1IwkCIrz?M5* zCU?W2N3`p6wnjOoft*;z&hK`9h2p_F=|NdA87U6J*TRd=+)@nIHo(pq>g%_xN9`pk z(K=UiU7^)yqu5L_IUV$Xc~jbwyeYIOecdSmQ^??G00g*p7dS8Gmyi0Lm3I! z3(L}eZ@{14Y<0oE)$Q#09k{ltS}J88*kbo3+qrD94`QIZy^};E>DHJtXaHg=nG@7` zR2f-#8Z4+(MxjW75|y!@F!x>q>a6shur-*$E>m;!X~0EN2!^_PR3?+oG9{UHD=*L` zSReXaexf_NPM8~WaHU?+&wX|1gfzk-dMD0)dE)Z~Ulz?~VNGR-Eljd*QlNo?nAN1g zR-Ql9>v*!T-cH$xlcGG8oZ>U?DXAM_&|YVi{72h%x9?QRlKhskFEyoq$F`lnsYWM% zG_%;t`-%6v+J6abC#>XtalI7|m;_E+8KP+9U~Eglel1N!nlC~;$aPs8Fk)s(x&}pM zTl;kOqJzx%TN{lYt|kk7ky)WIRU=f+NEVvy7eEP?%Eq9FL$&}*$me5=@Xl^c4-t-< zLQy@Kdaxu&$zh7ADw<$HJA~Q6GyEcp34_P9Am-`PnU>mHW%cJ}@~+jK7Xs7P!cVuf z?ppX@9apFJjy07TA$6k{wy<$zv*kx89&YiabOp(x+tHoNp;~l#D~>7X3qT*lR#lAD zO#aOi_{kTaDd!`1-jTX$=&$|zU_lei7XFC=BGG^X6NzN6gOQiDhFS~utmx3N;VISmK2z$g^X+_z3S{S zBA_SYuDUG|SbA$}58!Fu0-Mr9=BufeQ2xRM;D(2L*oe(d{}?G!aGq^XRc_(Gr&OB7&PyiiJRcOB6!C=Hx6TPOgxkzP_G~W z<_BmzkuTb9^;C1{WB#w;oz!_-r4GNzt6HDU1ScCUST$V(7!9aUZw3k@_g2?VvK=7b z2wD#560ilwyBF1OQZagZ8Yypu~PJ!~~mqSf;PK9W|Ltt_C24u>3)K-z;Da zhi>=GS9ti}o=I5L)Vm?0uJ>l!Gs^2>V1O_1AmkeIEAbnrx#GjCUM=x(FkMU*0(YT1 zq{AghDHKw<^riG~!o)XFZO16p92hQ=IOt%02gDbvT+=~P5wi#_n)=Bwicgw}GQ!uz zhvl8hj1R%)zCM*U7MxMx!afTe#j{T_Q89HGNZhxL>B>S;%L78D{_|apPzo5Qd=GKT zqm2J~7@`vph)lh7NB~FDh@ebdd3aA#8Y=Wf?Um+54aN!xR|t7>kfN3}FUq?#cy{Jt zOjXwYp-@En1zj%p>)N{vkTO(rFb|5f5UTSzTQal0c7>1#mAo)I)t_T9=PeH|$~~Ka zA<&x0rcAUZ_pN{SOoMTpTKw2mQvn}5(Ww$gMLCdzlYT`~@Jko`xH zB{=n+u?bmm$kjA)PT(X6YhG>GpDAtJLRWXObsQES{^r^f{WkioPgR??HEz2ZcZPc5 z%?0$^*0Bbnn@Jgs??WEA_SH}JMo!Zqg@XvnS1cX?nTm)`azf?(Ybez8CZhTDyVjsg_nbUg=d~rg;zuaCsiH)pD)%I9>KGzk9225 zo$lYMiS)PKmxRH80^#?lo!dJyk_K1wl*-+M#c0(cnl>=BWJPkypIeci>r6?4$j*Os zNNdJEmFHwqPTwmw)>wpqaI47uF-(%UEHuNx3fY2d1cK!LMfW9A&ry_YkC{MjL%1>b zmXlj^Pj!t`yqY2)0DQ|89RgEZzm#7z4%i z!j_Wy!v<I?UryA ztW8Cw?RZTd-fYC<5`Y{(09IG#K#fE4oN5dX%N~IP*d3L-ZeEmjf(Zw!-e}}47=9sD zYfYpo&uTq)~N{!GbAR){FsKs zRfj-?ZcR8r734TZc-O^F!(CMevH*48TMInZA{q>S02QjsXUDb7V*!Y{_~pSd8bf(? z|AMI!cQT)j&Hr(s1otbTq%=5`5hU!a(Dsk#f=>Aq9g-5ppuA>TjBc*|qDOipafOd0 z*b$o1BR`VB(~w&yaWe}?3_?EIf?%9;-;gSpOnyx>P1A-S1tn6*g(EWEAF?Zc>?cPP zluqP;;HJ!%h59GHb;!6PYbkm64gVGMEy^Di;SIIfw$?Fe+4>I~D zP`W*`vLh4?uI;T`cHK!mF!?Xtine*z187^&gstIsoXMnU7_|z<)NZFSd}85|ZU(8f z7w`UuOE6IWhWfcbOn<{%Fb_LQyQvQ5l4d7d5V;oH#e~Ld%VgS~UE5Nnf6#pnNHrli zRGAVDS9?T$+^0ZDi_@D;u_V{~mtBj$tmvFDd!Z61j$~U9RaW3K9~stYN__!Jfd;Kz zBGwx+eG+T`s{TyrC~X@b$_3y%(qMgrrz+dgxfBqysOn(bw`FvqT52&z>&mbI$Xg3FET10lUa!)OUOmgxXOX;P!RrcXC%lhP+fpn=Xhnu|HDr zT)7i2%7(F`ExxYDXDYVR*{j%g8W86JYVP<<(m+616(gO`obARBEv3p*=bl#Wt}SD& zsfAkQ!P-+CYXR=m57WC%^T$_jTS8wGXx%(ucqTG%)3FqUqo8_FY1apmX_Q%?xjGwm zIufz1x5jAgg6O8-d|!EMOYs05uUb%6*P||Wf0UYqdwE8|$zte+_Bn*RXJlN1KC!zS zyWRDp0*!q3E$AU}L}@y#$K#1&W8L$LU0(nBCsv(aE|5_l8@~$#y)_*clzQjjyH5!$ zHjC8W&}aZZAsdSb79Bl)UC^BkTFh9L)LBAQ934QV#KI4-LkW)fg*kq`&(gZ*%-yTf zHq`^={=^yVOB4q9!zlo6Cx3H`4C$M?)(unmnMXT4gn9g$=*`;8(N{pO$QC$e0$)HO zZYrXDEo&GCWR=?Ri?~m-)$%VW&TK>NikC{VG*9F_{x5NLW7>5>hvQxaQndoA|xy^QxY5}6OWKKzRP<7Z$$zL^~U_t$4v8SGDM26vt!Y;f5Gu>d_ z(f5Z9@GoHkkvq!P5gl$`Ry&%X_ITgMCc>r0#zxPxkT6jai6m zS7d#k`siTh$iA*>dkC<2#%=ZX1+wo1-e{TBO~lq z;glY66E-V~F()>#_>*QxkLlUSq&{+@#MnVgtIX6OARQzpfP6VH)0+U3Xysw`a}Oq~ zX>&!IPm^pbgUNbN6kYQ~+AuCOx*rnP;wI~YHfPTFmfHCn&@0-N2DO8;Ddrb0e~9R#=0JDGb&Imz=CS^dMOrjIFVpV79A+2R6a}IoQWP zU8RbAn(sArfgY7QNF|tn`TE;&P#?-y5?1Hr7KVq}GGW2}H<2qhx-*c+5%K4n`I%Wu=nN#sU9@aU_M0iqgfR}sOq!BL$MdGT_mSlk)7 zPb%iXeM6z!f)9qgDljG?DyvI`ScBb>t=z3ye+8h(4UKNP@v4g?gVN<>=go=+vSDgsXM)MFYv(+Q%Zf4cX1HwwF^sv(%pAm|N2LLqx{WT(qbETvA zpc=GZk@4lh?f1k%M$GjO`=^XwFLHQT*n8}lNAgccsHqi0m-p9Pip%`=X7uRB{ImJ7 zULU)h_`F(^5KEt>ZeiSpOu6?rwZ-%VoM>*R^4)Xl@_W{7L;AgXaCqCH#o0nq{{>t4oOf-6+r zelsIYlBF%V_0v!NEY)CX^CZ(1(_I($x^Ds`Z{j zeV6OX<00GXxL1hw*hqB{p3{;O211%lU$r+E(4f8jL1NoZ37xAW-cp^`=E*Q8vREuo z3)(K%BTq{hF98*q1&CZ#ew;Dw+4gqy7TpVDpLK10&QXkhXN1s{dH^Bb0;bia1T|`8 z(2d{kv%F#WF8w;+lekj{>JM6!sKGyxT;O4+yDt!kL=1bdWOW%WXlJ;Bn9Torsex!| zN93s%Nsi1i+YP`BOOfD1$x@5>35uV~aU4HDBJfm1DRpeXXWQf?YhguDIn38vr7K;e z)=jEQr~@+Iu`IXiIJ&K`v?A4jLQ}g=vdEMcxM=HF2B&$B*k?1vXljj{97B5#0WXc3 z$7%-xa^vSj*>2r1dCI=f#+QBnBqV2aNu@pCq@PnLf3sYs7Euam{UmqkQX~X5^^bPf zDwq}?*p3;m_xOYX_&W^PG*zX>E@tyyyU>&ZLhq>O40$_vgunA~mkgFyHqK(EZdy(N z(<`DXudkn}jXGuzz-YW`O7FCDM!e+u0M+UuRENm%Y{*0J``lA!P-cfhw@v>&Md2}R zME}H=JM!Xa9*XTHI&i^o)hiU>H9<3y!d9v!LUO*blFPJBE0>b?VKEywB`2e5x$WWp) zs)dFS4fdYw(0?QFm!*6_QNQ%b*7 z;TUOa=1L}^xmS9OWtf(A$BOb(DEv|ECZovDWK6pI)&PD$v(ca8QZ@8RT2OXk^%6wC znNjK%bBlZ<5l5NNAM6f|m*2}6_RI2^WN(Od(lG%W=FCGKEla3OT*mOe#=+(kr|*5=+Dp9YTVvaXe$TCXOcZ9S16hOIXig7>e*eW!>VNX4y4br|S%l zc;`V1n|$2KQ;-FRKc=0)P)-NgWE0cVz>=|uGND#$v?X-T)2mIaj?$1PJ^w0Ly6rs* zdB)nRC03sm`pP~_3;KiU9M(*{u5+w8EJs=XR?hhyQ*1flCKhBYMB0Z(`0})Qcvt}* z;U(s;DA^{Z9@wlyr*(Bwu+5{p=xhL)F`F_{Bm;(XuRhYr8MW-9==xo7b3Q@}2*uCr zt3L6N(l6?0Ov?uc~Ld9K4l)Ijh zR5sU%C535??ljAPZQ+dPN?*DkuP=f0qX(0;OUKEWy;GlCqoN>D=s(pWsK3l8Qgokn zKleAvGYA@YMv0BqK2h8@-iV$)@V515d`tYzR(hgJL@kd98ru4;P1uDgB#>?fS2Zr2 zZRhX(PZ<9@GI|uQHP9SS^%?*{l58u=Zk>mn4}r$=N;^3Qv0jTJc+suc^$3X6nbeBl ze`P6I>{gi?zXn8qLvfD^+=HR)KTnh?Bhd(TH3mhn5miL)5d3v~7Z$%%39c$})!?GP zU(0Zqn20r;%{BdSxU|DEZAUqZp}z=JUMsrEm2z^(CZIroA&jV^3ygxP#V+r}X~JE8Q=vd{d=fDJWYon!ih^ zY!yoJj8y$>^Ucp#mDmb)7hdz6X0$PfaD*)$G!PR%QHE$D#U__ywr8KgHnkHYpVv+P>~#+Bv$s7hlVO2hkt0?w3Lqekl^oxs1CBoCMVX{j&X;6Vyc&V5e(L~J)WoM>{FFvSb zjnDFypreQsZ{J4msR`rKSLfYx3RRckJ2~$R?j(;_FnrLc7nJB`{D8f>gg4Ch5I^`8 z=yg1>x*P!CK>7#z;z1GsZ*TS-_~FW{$=K#R$eMUXrhBCORqXua@k3UqRC{XW`d7yW zThB=dXi9Ndr6m?JaW8M~JdBp`iD0}RU4f@g0bdekC zxvwpaNWP!OA6Y!d_Q)4LSEpW2D;tMi9d|Ox+4jvL9LBn(xm&%p%BU(CvrubhdS>Un zg^f=EC^~Zr*LqDZG|F9yVfX+-7b^8jV+$lBUnUbrSr&>y8CR+MrvsIFG?sDCb^jwS z^MXQ*5||NI-T1GQnJf#(wdp`)V+>i#_O67BR zadcLqbP2ir_ozzRm|&WIww|jhu4x|Qjs9%7(DnV#?LXn2$79{Q=>unG+kGSOFX8Rk zpneb&7o~J0%Dq!NyU8Z9yKsy#} z)IYp!tmD4Jjc^WA(5Do{t)Y=ne%G@&JX zUKE((w{k6uHjNTeQVs~xb{}0c8KEZld31IWN2uzkLsK?x;;x`pEj~Wlx7&KdZ00fA@smK;U zScP8+@2e>5Jz`f_#)MK$ql;>kC`OG&RMA8i-6&CH)PFuH8McbMg2>8okYU^5rdJ9Q zL~(=EIm=d$yc05EK-qdqn6yh#o*eE{(p%f_IvG%;Bn!)v9c>IjSEi8{$R&H#7=*vC zf^EXAVD9|HW^ri=G+>Jpz<&nVL}Lel0fhUkdE=!JXx&Mz5y|e9*&jz$KsIZZ&7yO$NcP$ihhV;e~OCdd_%K)ME&sA?KXMU zR65{%a$OxrXIW3A5&vx*TKJPVlzUw2LMkoGe-N&1kQ!z-IhAy-*wc6JIq|f8(ai<> zr7k|iPmQ%A7rIY`&mR+)54UW03|{9VQ|l5`efsy$`?Jfg2{n9EP5mcC0^|nkn5w++ zL9r}E9`K2wyPL4Bh%+?ZCu^Ru z)m=sf1JUgMnR64$(6E1Gru*dgX078J zBqf_<;ttO~(S`WZ&sx`S7IiGJ+nObQYb_)j>14bqswTnOJGxfQvR5*%o6RTWZ%O6y zYv8V*&41!7GjRQD6q?kEq3XhpmBvW`wVVzomdeeoId((!U?Gh{=U@*u@Be^k;<*AH zlXnYYcMWgQko5x<5Q^eL^k6p~b9+lezX}P*R$#r{$pEEs3M=InvAm?JDAwR?J3!2v z$e)Fk=wgav8^j10EL0mT)9aaq)tv^+wm@a_v85y^A9de+8zt`LFB2K{Z>Le;TIs$m z{at#bf4<3QBb^7;HH{%0xrCk6ZWi52dMuzpIX%r>eXuoX+S&P@YsDr+o!bhgCH5PXn z*t(c4_macVY+i_JD(y!fZFe0@j%#H~lJ=#K z@=RdtqHCS`6SB^_TV*8K<8^v;I<&Ei&}@bbxBkVR%d0bB#jG}F=HDcyA5obW0D`lt zgHI8$c}}?7wM1qN$I9Fw26ma?G1@6A*gAap{LDT!U<$?>NVpglc+`7oMCsVktNi27 zIX4Io@8yVg3`F_e#jwFFw$X+dAvz*(a*6%r+2_6>mM{SjtrKGm?eau5@x4CP=xE~DxLF{>NocRnFHLHD zRY;n&xF=lLy4%CC;jB#@8fHpqlMcQx5ba zh*ar_gH2QO#UtU01_!z}_2~whPa^Oq4B->UIvZLlIKASFCGN!AzIDgG<}O_J5MQ#$ zjMl+2L+Kr;63WQ+Ynj)TQHH}d1LfOU*`L-4u`t&VMJ*KzBs$^OPHarY=F&fa-qi%A zj?2Ri)t21G73?nyY+W4Lfl9fG(R7l#*pWzalUUkUh$uJT9|*luMF*y02H(TD9dHD4 z_kvZU%1RVlFjrZ%21G51v~s}{E1CReKd{#=!b36uX!tKkR-pVC$E|o)AB#l{vN(MW z#78EZh`p3PHy9xnkH%1FJ}TVv{(*an8`qt%-o9*;Nx=i7PuKwfi;A?Vi0RSzwpR0? zSDeHJ=#Mpj=f8b)YPQQB^Jd6IFAiNiSUwxc1GP{6LB?>jc;O>MxKOJ``XCxQ1(Z7V zs`W%H81S0>hfZzzI_HS?6Brh6aljXh8RPUtOD&gx1&+1&WVNb^tKK1cu`_TZ1QRvE+=6HQ*QRr8U-i{tsFM_wRUYKw?dSTbq-eoR1mGWxzzgbJ$~*MY z7&&37+Gb*$i6A-ykKrN)?J60bSRs4BsE4J-KE}kd6Phsfg_PYsM%d-=l=oI2=W>NC zp^F&dvv40IzTl%EM&^==0~3`sT_-4i;yH!%?+T1VOW@ze_4CngWRTD`aMk1ie!oaT zEB%k9@>ME_T|@pjMkado3?>omqc(nMtixAaT8hJl-*Uzy$Peg=HcPF}wcV13#8PD% znzn>OmMaqIQ7+zyiIM$bdVRWD@1oA2b@ujYDtfA{ub@l=g%R5Fj4Jz6O4; z2zZgl>~ic^d7(srujpL6XuueAU_?^TxX+23?Yt2m?5X*Xc(_@;G}sm>ZlxPhLamjh z?@7q9tVVJTjn$TT;6T73)KPpkXTLbu)NGA9pfdsR0-iaf1 zjqiT*74?Zncd^pL?y^Jgkm!m+s-z|XHJt7Wfy?bjrw!X5fX0bKLzc>mF8~f2C)Ni_ zFM4kwm4zwo?n}kMNY*2R38ICSk(vpl^&?Sz3`lGc;CC?*KKoWB9Vld;|DYLyq<={Q9@N>9tm+`Smcl!%-l3jv@3Z>|YfKCznV z)8>U9WoIP-V$EC4>0*jwpq-x2IL zO8sfXw+LS0^zHl|^3kN=E}hsiq**8}Bj~7S4Eu%VzRqb>R* z>|sEHnRmjS5i*e^Pt4(bZcQdmoD9`3--5I_mG!E;3+ji1kvbpxWLR_JbFpr*nzLaP z8*n4&9Jf0CW4#odEy+Q-io=MdxZf)&hJ=bTP%-f-sbu=X5`}n$po>RBYORzs zc?UETZ;7LtR_61xQZ}D@-w1)Vl`A&%fpJFgZNGUFVHJJr@%1xn1S4I7SBoAB%+C1$ z^0clVsk$w^Gixm36ghggkJI5-%B}O{I2dV~Vx$m#@0+R(O9=jf%?$HwKB{H*UsP+V zGy`6);LEc>so%yB&547$0`MVNI&4O~4E=ThN#WK^ak!4LirJ4u7uW~pO}GIm6V{I2kG5&23|t*B4pLjTt_3?(nS2zD<_IaJ zh}7D0B zfOFYJ4pWFxrXV}o%waIO-5<0_lzaRp=@Nti=pwWp(yI_O*WjI@ut;=vCT}5`v@98y za)gMJk3w`NxAI=9x~6tReIIk_SM^79lh+}lJ})oD)J0zz>D!|0{@jX<%u{u+$2Vfu zEHNfUhE|Qq7@`XX=T^5|{4h?q<3b5g-UUKKllL?73|Q8-4`(8 zKr#%OahXqpv7y}Zc{^wT)eVbEkfVTyQe@>@piKDIk@w|c$yH?m=iwFa^!EmzWZK$H z?3X>=d9~I;$2r{1 zlz<$++=LWf3v0~|W|%>?I)M}S=wynb->-Dz%00uWUq zhKbH35D<|n>+T-eb+j=`7AWrkC|dcIOe;prJa2$ES-o4Vb)q_Aj7Anlq@i=`4J)=W z(Sd}Vj{(Cg8ZM=24z9O?GVA9MZ-NaMczv}Yu_ANI9-*Y(Tg0|~C{Xm*JO2%++nS-f zWEn$3b6mnFVn&0c2a~=DBV>`Y8@QMRXQx;EWdhndCoqi4Y|Cl1k~nJRbG}f~rD)VP zMu6Jq!`K)9bDl!79>zgx|9Cr8>J`^gpt zqWFtLe9&QG5~WoFN7G=SHtDEIT`{63D)2 zRKlEv3-w9}g*s@gbMvBDuL1#}v%N}b`-96B#ae>QfJ7*iabk9%XL}?5yUJL!v6F|7!1KEuP?*F?9X3hH-$E?pBs&04$%#A7CM1zoTt>P#m3)>%?9i)!uk_SK8 zCkLUbY#1sIBDR1_0Wlz=!Of7MT1I~W{`FMRiO98H|cOEH5!7G4u-pkIxCmJ_^W#a2`{Kyb}h0pu;N$ zL+cWXb7JmSDC2bEl#= zB4@TSBgRg(qTiWAlLlj;zY0xEO`3?>f@@6$avH5HQhdUg7Y(+eJ1D3&O$jGbW%fe! z&Txl{MmIoqBe#@W&A<#6`Y%!CE+EKk~1A_?5s0J9q4_$@I zFj9S7otKoEg=4n9&hrufoNw$PcICH5>N+Xq%7VD~hS(>N#`vS$B2pYndS=hl&sxB88-o5i%o4DIlB4 ze0PlMQjJm4Dy46Cj0Q%OX3!@;VkrVMu8-tOm}K-u3EDKXWE8K;qx2zgiWIr(416M6 zh-ffg1%u||01Y0^nOAQTcyORb8DB)fdQ-+&w262xZ2&Ei0UNZH0yWk~8B38>^c)&6z|OQF_WL&`JCve9t#;hesLJU(F(XfE6F#~I@dw~i zPzZi~Z#sQ>%o%j}x8}i3-zly3d?(8_k0w277`KkyT2naGQN-DFDMIqNf+#@G92bU7 zS-O9A{&Zo~c&Yku{BAt=bu=Eaz^5;H;ANpNNpEY#=7=kF)9vcOFH_Wk*LH{knF~i* za4h30^o$y`!hc?vtOLrUlT$L-p0v|$0TuXpl+?{^17!02Q5u(7!UAYm->4jNL}arZ~Z!4r{SLGQU=TVA_20r>{jqgA`UdXF|@ z4XQYhCn@8*PNpR;?TXV{tb7xx3f+z>iWe|MN6yA77Z1Fe=}SK?t!@W~TLk%>t#e1d`xa*BcH3=o66^ zQU|u?*jDS>?LGQvz+z?jmdAYO|G);KOrSpRBv|A~=jSk|*HlkDoxdRFIDpACAVFqr zP{SFFw*d0*uwA7niKEcPe$jSpFZA! zR2VipQTv~1Y{;kEh=P26NF??(-*B>frh2FJKPNEJDgfGCz5o+?b@%-p&MoAo1Vi-G zUWE3vaCj4{3MIbH!ixLjUfgOb4%;ko*3RI4q;LyqqeVm7)g`_DtIN@^?81VJ#bVRCVc}CKhbUQ>5dw zyxU4@r*6=(ovLLJVlHrsM&x4?P&9%9K_n+|SXW#>AghL*{I?m70Vhnt2+cH*(*-)H ziQQ71veBiw3S_)wgN^@M~WjY6V&b}LR1Q3mLhhpSFVw=qYmug4PJ z&B_r5(BzaDmMqLx!Dtc&I<+P+f;LZswR-o&v{hhsvdtq{F}X*ihsyb4|4|t*HmK5@ zq>UB754S3mW-acl&D2i}(yxuv;rMq0JX9O%3vN9Z!!6IeuOp=lESUNLiH9$t+s1BY zFXnifHg?=E4dEWL&7FsEsFh2ClpOgOm^{ecn@C>(DieZd zwk-vya;Y(zu zE|l4qxV73#*nCkEQ#6^I)`O!;vwX^I+554*A>)|BSzc_^F#zLk{Qz z(y2YvO>zs^5TLJunX`%mlVGO@=#W5Xk20JS8jDYWAce{2LvGgVIw{rh!=lEh_>9 zCn=&1@~IrIH|wm3ZiP(-5ed~QQ8&BO_F^>^aj|BeAnZqqL3nMuT(chR%PO2G6U&>U z(7IVrt&N!G0Q;38ndi|Sh(WT=&C~+;pvd>-zEs zJMbzPYiq@Bf0kWpAf>YyZwir=Hvb`}49sI`qAuMQ@A!LRvSqBbr$Z_*4yErsM6cn3Hj3QX23|+rWv8)-U;@nKGSkEk85xj5$@;>q zIVla`g$RIx_EGp5`QDe(^=)eWEem9TL|_`X-!4!LoE!tH|7mAiFpxq@2d1&s1=v%K z7g;Y{Jm=`*38Fi>T9()JDo|}ij4-v#cH3Sbj=&+ueN3OD9|RyZo|J~^zAkJh00h@G zZ#)&Kb7)Xs?X@~+YZPn0Bzx~owv2#jZIC>+tk!} zTCh)74(BT=0@3f+WUj#i*SyV#&h*aIW%e{hpqua4Za$g4iwLxWj75O{&1?7l+kUtZ z=-+@h;1NPO^)&T2KOc{|3P4VQtnJ;ET9CObM?#V5YSoxh1N2@PcEc-2NmXAsb1G>z z=fhw1rH*D#%r}3N!uVyrW)2>3=uF|gN~-U_NwbH>4Vc9FprQK6-F%NpL3Ee++V^3l*DePs)!b6kCfnS*OnXcBqF^&-Ej11obOT!E$W2sJ^~6Z<(v}J&+T*% zSO{`G$`2ynh7gk+;vSd{QKlF+DCJspqI?bjd47kx z`8l#CaXbzjd42=3Hp3p-2I`~s*+79JFd*L_0TCAi7?9@^VIteG@qx@1%${ZLF~u|x zyQFFJ3vnpn`8|3%3!XzyY6*H0ju;$fE>~tG3z|Lhg_>wlC!|R^S8zCslBSWBY-Fw^ zP8k`L=W3I;NXWgmSX#>E# zUa#rJExJXwh{a;nS{+P3`RslQGv{p2^LX&!;XxkcK|bU|K2&SX(M42>N>OQkoO9X` z;pYA;k+yC7;_ja12l7{lXLuo#$Rsie7?n!3TFuoLibRnpl3lV(cBus_gV5}uM?a9i zLIb*(@?(}W4$++U=JF?3LH`l6tRlv#1xM_2eXjK$@1HC0@xC!v-s3UV#MqS;b-3e{ z{bGCl6|S_^AA8J5h8E+!o+sm*peA+%hn|%5@*^^rmdtg8Lk`L19Fh_2NnR66Eg5mw z?2$4I`-DV-_9^N>0*9KDQ;bJ&4!7Q9DyHFSBgdN@wOM&sk*R5mGfN>RAX_gXm{8fZ zES(Qz{%n8{bM6h}dt+~ONytiG

jsk}Ew!zf#bKeflG2`=6X2ISYOZGS8pyL#zGx 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�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 z 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

U+$JD72T@*s0{K8Q^& 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 z�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 V7h>uUU`XaLjc?2IkXE4Eo)cJoWsCp- literal 0 HcmV?d00001 diff --git a/res/upgrades/3.6.0/datahighway_parachain_runtime.compact.wasm b/res/upgrades/3.6.0/datahighway_parachain_runtime.compact.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e0817510f3345820f389abd9b56e4e27f509b5f5 GIT binary patch literal 5943412 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

    i2+s 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%0AU;_oZX}CaL~A1*(6x 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 z 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

    B*?@jli=F2Lefp&Gtwh)okbA*3SL;Munt!S29o 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�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

    R#7nBT%Jqs=XiISH()3A0D*)@La&lnib{s8 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

    LT>&p+ZQFly*H}!iETHMpMdromm{H%w6_qYea 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 yf}~X(4kqUrp%9++32*9 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

    TVm*F@(F(D}mVnuoF9 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

    Y~cUF(yq`fHu9V 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 }=9oWMF40k+ z%vZP(PBnMwcqhn{G z!I-PbiOZq~1x=Dp_t{DE?_2C=oQ)J8g1?w?=4;QMP1Y}%`npUqwf>*2@3~nSKOf^M zRJ2+*HyyDcAfnYwftnL#MDx=}P%{;4_$R91p$iGz8DLB+c3&YCEbc#~jY>A%PB7c8wgpR@SIz^n8J~0Po68WcR zoTYA+JzJ~viB{$!XV;T|izj~#9sXaPq}G52@M6l@QoAHA5qAR6V&&K(Glq-H?1HT^r~e|V-(F+vwF4OaUM_St6OqB zgoX(qXa)dzIN!F!YT&>5dRUz_lOgpg=D;Kmc}}${@TdBYVyM;HYR%}f@73C=aoi4=Zy`EcE6nT^J?{RztU0ohiu8)!${c-sYP|Fs zZfLFiL2U__fXAf-^MD?XoS9Q6Ur+~}DmYuqVP42^u#Qy0l3NX9!Aq-Ieo<_;RKeNS zHEI-Y6`GZ-f6wxx7E}&f|3=QF5;-G@RHq5fF-?$mUJt^k_W70>#7J-K6+KAL?5X0V zz0rDV=V-P15fg>OEZxRn-~-%+0@_y#GciiwM-&9#GWn$(I+hv;XM5`Fw1~0*nXT?WD&r!{&ACCf)lh|;Ey_{Lt(6H1 z>*lfsu_mJoMet?#=`JeKIN=4<)&ZggQJuEw9iWzK+@N}D2N=8(9UyDJC+Gl^c`)mq zrN2kzXQ9mm`5rlvof>yLR6R`u_dy}dZAJ0y>S~JK2&MY~)mZB2PgH)8Ig3{A%7{6u z79KmRYDA)4AjGxYy$IHod4decCf&M9DC4mLtxhvM&Ec&enWv}nPW0LdItvZ)*ypK* z$zjT|IIdufNq05Y8SjOqsoJk4E;Ye(5e$U0}~7fsk3wc2P0rNYgm z8FPkC!vOC3e{rZa%lc*T>Y#x`G9+8um)J7+f_RB7gO}nZ545okkGztprVgm;PNjGN zZ7edEwGu83=^OUi7QhbveCQLz>`0|BTw$G?6M?iWPXSmbsS`L}0dsAsJY2=9^g;TC zu!B^X2apBl@Y$JGby?cDEtO)S9j6EqBT@M=r*?!|?yRnjhs#-c?~NYQ4AzT;*7_r| z7P17wjL5=qg2Y8KZx5Vy_LhSaesn6x98*Ee?-dcME94xp!Z6-fEud$g<5iF>E99u0 zZJc~yy&QjQDhMG~Lne`u%2qpPI)ca0N{&E2lG>Iy=`NjG}OsC&KF;e$nc0};d zWI=-gJFDhso)rPD4cEGS>*u|8V%mTWXVmdH@aZz#`lZ*`CbD_L0n(swzZaTe9JO>8J( zv&sHDfjjbrgS>D+LgOKS7nc7*QCl0MZcIUS$(b?OYH+NgcwKg^+@#TI;8cEwq@`;X zi%s%vf#i)uJFD41Aw;)HjSb=y?^+0NOA#fq4Y^8EP!z>YiB;1#If|1t*240mA38$X zI8_h74Nmp(3p0F_UpCEkQZFmIoVvK_@1o@7mwPqyvW(*O&$^wm)~4dnE&3ZjU^QV& z+qPuyI%^+Ot26;!ru@FLcF~wjQ!bS3l~g8OF~v)!oJFLeMxsZVLbFItDSg_#l9JRg zP&;ITT_iKtAOj3ppj=uxV3#>yQ+2>vsX=*}TURC;P#@wDMAI@hNy-^MJ|J#UT>6+~ zEyUgl9MklP+G#MN zAV|(NcI_{q*oLFlyquh-Gueg{UlflR{?wN&F|yfoHYK&n6fjY3h8H_oLKP^lwfPu= zHHT&=Y|um0#a7)dHX^?6bPG7hoo+z`DfWwXDChyiU>9zgazw*)Z>HY&Va@-kfMhN& z@qJiJAu!SU_+W4zt$IuqpfAs#tOu3Fv+1CobSZlBGzr)Ic2K6z2K-q3VYs zADl~3^L$PUa?RVAR4A(#mMsX&mKN~m{NxI4fJ+2+gSYaU_*Hc!emz2J0$U9rf$dRJOCg-N z6y~s{Ca|?vTmsws;wA-;+5brB@^qD;tf3dKAwbONdMxXQYbbj)`#4}o`nM+Nzo{wR zWb|L_-_(H41G>?4&1JS4@IhwqJyq9Ir~zFHJ16UK)ycM|dz{a7bEZxT5@$}fEZ%>> zjH8AB7qu5E&vs_(xEdVy*PNk?){fL@?Hg5+60IGz4@PUX6rwek!f5TWY6_+)%a41? zlPa_Zk=12gO@P+c8KyIIB4QelSrZt-rUZspOKKuUl29V% z)i{yEH+w>e4WQP@N}!6YJg7B76sRIZ4{9xiSlgvA)~*qv1|}jz@04AH$XM#dV3mY8 z958+qZ+%jW2~DZ z1-Z)pv;H4(esZ-J-?IM^x?>OONq!Mqykh*~v6}Eq18dhfK!h$1@T^_q8L_r_#keBi0trc-9urym;2eX^63Q!_hFc6D-8R8gBZdVZKylRB`ZQ_Q5!~mO>SC zDU5@UR8y#8e_$zW%7+x>s&&u$f5bV-+9zj|l3B!B$MzG^75)ceZ4YX~-VIV{IQ@CdXe@CtO4o zhisO`giS4l;CCrZ*whZE5&Z6KQj?;jAXl4JW^LK@nyQ|u8Sy$jv#HlX+Nhiw6MH?kfDd*RVdpoD-`Y`EsQ77@2F> zk_%(M=FSv8r0E5bpR)=7jYwwIB%jWxBlAObkx#uqQxv27JOYha#t*aA}7 z!tW0->W(g2V&0AvaWcSbkAgtaodU8WWFWyN0c_H!wXLf&#FjS;ES_p#N`C?va^pgb zOl(U)G^eW_OM(tdu7Q=36*$bfEiVw7-#leR%S|~b_4RSj6=vcA}O5;;#hb?(&y{^n! zZonTcf!X^)y}J#P_RdOfVhwBWM$)X|`uNV4RbR+!873R&b3cZ;Z)n?_)F!S9$C|ZX z=PJQ>nSn%+BLBcF`20R4TZTP`ow)muEZLEzRq}|@3CT-ex8^v;`9fL*RN+aXLa!?f z+R$|DG}Zz(taZdVg&v+Pw<{)xvi}80glf)P^unUbm6OrM2q2rE`aDO9B3f$~36>>6pyA3=4w5 z?Jle0q7m_MkPOjZ8uD$2pb7x_zD+&)Q&S4AZvyLY9HJBay2NYaoG~xv%P?e6`eSR+ z9>-w0a$#I9No=JyKOO5z0oTg<%De(it9v~Nq5{LBwrSb^)R01}+!6!+@~B6)WU7Z& z)#X|R*H~iB_Y^Z}?EmHDCrl0yGkXFi_NOruK~wpOps6fH&{VD>XlBNue&xxG2m-4O zt=QK%Y7!?)u33+Geo`%Y#2(umEOF1!%9v@UWZlE!a~|Vvi{o;wuH(m9+nFE6_z$>M z;C3105&ho0lpblkm z4%_uCHtWDFlpS9x2*qFVg5eX^S5r4%GmMSuWCAubxXO3bnRe7k0v|O_+g6CIgmW5< zhFbYg#KaKviv8GbhXp4lX#6@!0diDlH8}UGU{J6L3xez9g@O&m1XqoK4Z|WR%cN0i ztfz$ucL*YN)ePiBEPm!skG$e-%#A-<4tJjBp)Fe7ON5M!g|NSWT~kSw9KhbxtcTd#HcU}(H_ z&`eb)K~sqQP5#NC7CQy?Cjf)%AUSSxk22^^%R!(JgY}cT6FpMC9%beDoPmNA#(da4 zYWoOXK%xB5in^x2hXTV*IRu+r0gTSbpS$19$sKQD3Vv=me3%3mplMaJ5OZb-bv3*G zY`ORb86y!NiZ9r{P`zMGt^NqX?PZSw(Ml+DeD`~p627kd-1nVPqH1dGRetIyA9~6kc+!9P z`Zsxx%lG^D5Bm0e2$x}jS@4O-7!TV3Ruv7@o^r1Qkp-}tzWR;v0Ri_BV8Nw#m`9|; zY%WdOQFmv^m$cV{!tD!NU6&&nDa`9@x($G{HI&I%-cXy&<`&QF7i}swcB-j+c0R@fbs|hwb zr537L%+()*Hp`!h1LZHPYpRko3)qksqd1(QS*Xg3YL>GDJ0LdpUXN%5D4ShoKVU<( zBY6h3fM`9kINL}mgHU3e^*dSIKn7@u8SN5vdDJ(Fdyegd&Gc4mJ2#n1wiPQoSV<#c z91ik_O^MK(%8kZwd~@g-z$(eGqji z&kH3LbSr4EYNQpKxgsD-35=sFVL>Ew98KaRFuLRRHimAS7!XaC-VCQU%duC$Y{5a> zd`u*E5#DjT3q=AxKkMxW+o5PBCn3qv<@B{#kn(gWE&>X5Y{nXgcoq{PRZQ*f%t-Wt zECxKnRU8?<_Lk3!b4zBxo4iVx?nL##S;^3cE@KEQ3SqXRJ?{|4n*eH#n+_UI^P5sK zS(TYIqR~Jp>RXm)SNTA8`9c_&6cP(y0PHmzVsWzx5~&M`fL;a-%0ymvX?yExYlN}o1>n_Ua%)xzx5Q40rgUI3#$9JDmNjuTHjoQwoB#-DR}t6p#L5cYYJhOE9TiUvptRVx7SVDn8_J+4tD)v6U=MkH zMBz&zH0bd8}FWREQEU~KchLb^6bSLIo6pbAXLnXD@FxVIeL)Xs!S21FsT>|@Lc zR?s=#hgUkUdXoNBh&drmQf2VEh04XWPK)`0T)d7m zgRtf1E$N>xLbm@$JJzA+u=>l&!8kW52eQ%%2}@kq34sv5ER zCZ?@4+XQDY9<+=-iZj~Xk*1QkmX+`Y&AGj8d7`jiob)8nmLZKDwGF2|EsqlB!!YrB zZSKtg9+bprC5EufUU~bCx#h?yqCR+bb=b!L!t3eyd7XxB;tAWCvhzJDY^&TX@1Pl+ zvWtO0up8d&QEoA50_epQY|C8~%?M22YRPMeuTMh@8K%O7+nH~7wx6SRHk6~1_`tkot#HP!I2!VGa$i8^~59>%|vo?GiM}cxzpL6 zkmMBG$kRv;O$TggfC9C`FbTm?<3@t3tEnMeOw`V}9eIP72}q0-do^!kKD&i~Pd2rD zASX?tc>q#PzZ(R&89cw9Do@P#WC|n5m1HCNdsY`Uw~O2@N8>)XG2*Vb9n7=4j^xA? z6V~x6s1Whv*1wjjp6#ZWmTG!EaF5 zX*%jMVf39heUi?HF;1Mmn|{jm98T{Dk@LJ$GgmqqbiV2A6Y5PR+FeNZQx;S8rsDur zg#@S)009cg6sHfl{?`M3$oe5I2{i!K^vFNWk5HN?kEELJ`G@&`lK;=|IJD=yWfzX^ zkGkHq=#6O!~fEif1&TUobuTE|J~NHd8qks*M4Q!w%`BDt+##Q zcb9+S$b!PfzwD zW&6#Q{;tun{=WTv{e$BN;*pyxqq~MiZXy1mR4KKTdxngZUthdyWOQHO`1s)Pjq&(s z-{5#WxNrYZWnX1@yl;GPWH=tJj8BXXR|ev~;kYt7Ix;%F$X)x!DK7P|pn zW9*i`{o6+?`zSsh93H6L8g~qi#mnQd-6Io21M$vEe0Drk8Frz>Ulx>7^SN*I_pRJj z&*=qHzwUh_0~9($9F;Yf%CvAF93HET8r;Vz@tkUrsl%k5OPWt`U%X*gsnj#XnM0bXu)?vag<*-m?k@QCuDh<7U!GsmjyzgBtBn;W<~Q}b;_AEZF~8$| z=aYReaIeo_?fgpQ-~C2#JJvlkwz|8kzi;%$k?zsTje}$3ke>+e#=-I36Fa;5NA|5; zRq5|vw|c{dft?#F{p(k+>F(b>Ix;-6vZrfp*QyN`d$@1#=1TYA@OWi(xNm4o^z#Go zv>jM~nxE>BZk<&Kn_F6Q#ir)WtU@trX`K}`HMe97#im#48`=F>^B2s3`(uMY!HG&q zo?l7))aRKBxI(UoE6tVR%5vqn@>~V3B3BbvGgk{&E7vTp64z|5Ib5f3&E=ZMHJ@t% z*FvsE{#wknglj3+sa&UVoz4|=wQ;p`{S?oTs(xvt>a%5^2zRa{qdZR2_)*EL+%a$U#uCayPgUC(s`*IT&W z%C((q2Uj20kC`Fgk#+pI3toH;zf?+L&71Xbsj&C++= z<7E@$_STQ4g)+3`iv7|uHg234zGbv;f5-A2F}hM;yyNnb;mVHq=Dwkc3fjKqC(c<` zbUHwCcN&80^JnvYf8X$6|6XZX z?>#&#ulQ$*oyE>L{+amp`1X!sN9Xe5^>3Lm)8UDIbUAMM(?fSJF&g?mJ)tRf$Tyv(n zrgdlbp1JwDI( zTEBYzn)PefpSgbBdUa?UHUQ!Vir+xi8%VZ+py^G&qJLs^G(I<8wIP*C>iw<2jT6)+ z$#`TQ&(hPSGtY=Rr<#wCPE>ZG+Ewx`4u@|+aXpPR$@>8B%4b?0V?%@emF|6&eW;DJ z!KI{+iFZ9e>9V7J!#7sqvGKl91}iqMh&@BNFN|nn%R)TD0OQ8--SKVYq4s|-_x5TY zmEi%O!x6$&$K<<9?{c@2#>AP%T_m!X)KSt1{(s`GvB%iR#ArW&3Hqemj^**dNM$S@ z9vP2~@8W^V7=tZ0wrY$zx3!cKZkKa^9rrJI9+{4x@zHK1%;13KV!HDXX?}_{r_o-L zCo`tm&o~ctTe|jr#6O*QXMj-gTK&85lf0kBckxd0zL-I$U`*b(OnJY=zh95a^_HCn z#uGslBZ(TMmfB_qdc~|#s)_u1xC@twT-eFTVmLngoLEiNp@-%1ExQ>k3S}Crl6D7a zT1hj^U9>sMU2T};p)!T{zPNvP->8$8jFr!dHOL*K;l~CCDskK)Ff}d}L z>x0i(POZcyue+z#YJzx0btq0!yo?q^{_PTf9bMMl>Y@PLnOaJw`uI}@0c+2*` zKKP#ZzW--`^|wC#d!PN>7ryvcPkrn8RC@ND<*U~AZanLpOJ4t$gYV_zr#}6ApZnsM zzw*?#Qt6gf`?~S0%@{QhUY_NT|b_x5+Z`~F|~{m*>%^I!hTpZ~>{!~gw{KKJFX zTypsp*S_hk+u!-#_x;v?{oT*}kI#MnPiN0xaQzMc^v^$hesbSUfA!7Q(}zcvp1S?^ zJAUIg@BF<-<}Wzy^ouUO{EF+|e8XGsxbt^D`}o(saqN5lI6C&e@rj>*ZCCdLzxlhL z`TSS@^qU_(|3im+-go*RKmO(CFTdi=*XQ!HN@sL`=exrrz2}^_Y4g4Bzxu|BN5Amc zSD*N^Z~yT5RJ^_YZQo44?ZW($bawV#pJ<)@^~~voyOuHC<+&xfYja_Ce#_SM1<}eVNYBpBYTlSW^)=h$ zed#@~nS3G;?3;40%Uo3K#E()Ct!nB_FU~ea zlb_&I_o~aH$@}wXN3)`{bL;c3%e?LR*$eaCvsXrKv)X1&-jjaYhZZ%>JM@7}cjl~I z*t)PV`TOnT&68i}T$st{Gn3zJ{{Ba!-ojls%$*) z&FME4Cf~krX>oqx()8rJvcGDc$vtxgcJVL=#lU% z;a9`Qo4;20dibZ|p9e=XPln%4KOKH2K9+tqgiwR#GtN5q@+;o=OTYB7pLzGs{roTg z_NVXut!%Ea?woV4`G?28nx4CGUGFv5-uY|4@tgns%%gMu(>ve$OI1n~AzpsPK;?%2 z`nyY(=JLg+xeL~9*!bYDKJjOT-h1EwV6J%9xw{76_p>A0Kl7dMzIo>lo_qeozu47% zM#mdJdf&(Y^ZgGz_{mQ{@(0#!=@ienX}^UCb47=f`KHn+xlrjhV%{baQU&CB17}*5tbK#k*d6)#V-e z74sLrcIn&&h07`6!j?t3Vs=aZjKW0IdF2(^vogi(mDwOuiZYY$-g(-Vd~xzu-rByo zshDj!Wn;Fut~0%0^1q!uaCP&RLh+)_OSa^%Zn@;H+(pGxql+);jd0_V-H@-yJcdc0&%}(d&GHr88ZC?z590e)|(tx+NNKep3!En$?_M zPh~pt?U&!Rt$ALQiE@Qgqoz!@Sj^^;s*`{Cn&QFiaRs&)+}r6)`<%@Ft$C$X2cr26 z{B%#=ujN^NRPufm&*$>1*Nrs)Y2yU$Qi9)}j#KZ?>`1-kl>1V17R0AF$2(5{Zs&ck zThSADj{M5e&hWtBM<4n4*3?(}uB?3Z<5#BsyzQ#g(I>C&d9v?~zwy@}zvi*0 zpS&hc4PSdKc>dbd{!}itQgb%^3$`@%%qs;IgjR^f)lUVdExEpFW1$c%OydYI3No*Y z&d#q`7{t9KNaqnwxng)~uu;j=d7>1<#Z3NeKp3Po0~DMVMyxLKo*_aoH=K{CAU1jD zgIrV$PYcc>Z8Ir5$evtjm>`{FX+*gSBnl1nzBJqbd`T&%23vwOyGw&0A6yxPx#s-N zAS^UxUmq?ZzaZ#s4Ja|w6f7$QyV3#MS;BBpn2t(m9BG8vU{(O$qf^7v_;)_5!E9%1 zDg=n=U?OY}ZjRDnA;?C50TO^VryRq4wipIIr>{!)@SX`e3eBtv5FuL6M-oOGIlujI z6to066&Qt|J3kftueMb5o?u6u$_|F9bWn`Lts%WRurCTT!H2@db6SGe<`*?}MLpCl z49^HI0P`VB{rR9fSVOL1n4#V)!hG-@p)E)SXa^bs1%DlUFq4X?Wx69u2mgiqQ{gW( ztxEq)ux{3JYFUg{kz+16Ct8*X^5JD7-Rg(%E94XBP&;T^>nSWai)zioqYKCqEhNQ%KY#AG@jYlck6aW3WGNf z4ovh7U0cz}+4R@#6JwQut$jCEE?}UJ=8Z0EL0XTw#iDKR*Ox1*@0Vyelho;gk>Oo~ zH(rQb>Yvy*F*Gr@eZM9j# z4UATX`VMSI-yURcWJ}-JZWk~xIL6?kf42jByBf4(V$JH#m_N%==SM4JV@fqVTp1d> zrqX|Q$JV~lzDou=^!E3z-q6>x>&(>yXRcq<)17oDwRN}t z5!$9-lR{(NJI6;WmG0rbn+I>~8@G|bV@upzsuuRHp}ge%VV=+6XJanzYWtt!x6D6t zGgx&`=t8jT%Kp_k@7ngqcU<_ZU;FaHpI`X>m7n_5M?bi_<=(bmxbz*fUi0wZykqHq z{fFW3r++Vg|5tuzcJX)ecV_2ZfA*g}_=Ru%?JuAAwQrpAU;fW!Aia-a){R%Q)K|HB zxNkozbK_HJZ9nZ`&AEN-z}R?Y-^PuuMHv*2SGJG&M0Ksh_!Za^{I1}+{$1l*Mc!;J z=o{2XSfQ6VN~jOMN(6PGC!Z@t^jAYX7w)_1vYYz1KyZ#p-njq9(Y}GoRgA4i2dxo& z$i*XNk>%AxBjZ<%jErA4IA){p^3E|9I4`Vd$hLKKWMtQmATBDyHxIJ9WhRMwG0}^ra;;~apsW(yYck+||ki5T_XW{0@QT7Ndv3+mlfFQW^G)H@)bIsW#@1irw z(B!>?XX!6}L!+SV00U;tfmQ~R_k9x@*w(^3iK~k#2N^7+>ff14{ZZ;gD^^wx>}0`k z^%^gLhek&BPV85GmYrToNf%qoPxALiz~2nz3=i&P^zN6JQ})d-_(d>fY7AX4gPZuVx7L4UV(=Io7S> z-D)UwNMA5u>-Nu5<^W}Vl%MLDyx%nCUF)R6b4qeHwn>M0rZxZf#BPmzI_xic{dPAc z?1UJGX^~ZQiUu^61__!{pQ4O61IiA5q9a+L=-OP*9C77Vx7OpMp^leWhs^Y+TESR(8k85!C&I65{ieXMfp z#Hw{eeaXw%#2Ae_uzehrgnn*l0M%n)bYy=mfbfZZmD+nX=60v7InB;1ZbY`OhDosg zz5}$z{_Tx=pie~GCheNs>(Md2RlRC=#ontOz?Ff9`ufDai@Xpl4i1eaF&aayx2!3V zSFkKJx@}}+)8LJlkNB7t<)Vq9p#-+AETe$P%D^?%`DN*r`$vZM_6>}TZ?6fjjT>)X zwdL|xk<3zyUeictushUXYNs>-!Ko(LKXS7vn6$4`ReZd$@sUyVAE36C{*4<&trP3d-8XjQg$To2`bGylk=CZ;Z6e_~Xmq6- zf08M^1evQ3*tqd(2b}3513qhbL<(BP6k^}*Q;I!z_sHnrPmeI;JXDRnX&cJtWqte4 zb{yCl3uvEQN|uNC+;ffV)OXa;sL~jGmkdKK(vd(xl}M{S7bB5GEgbX_eYTG1r2kJZ zvPwl-y{jXoI*iX;&7?|ixCXW6#V)^2U*M`Rkm%ZN1F!g;bKwS2)P+uoGKfBSLcV{+BS;uZ@`RApdn+`S~} zzQ|&Q*2K0g-Z)s3G@%Nxf}FM$qz z+@Pg?-NTlQ<^G*v+t;_h8^#?q-T&ehCDX|+LP?jd_#{8Imvr{O_V3NyHD3E0en~%| zcU^V5nJsTg9Bg5Nk^KOTd zIw=i{pHH~0ME?qA65_(j#Z_isM*+->jw$EOs2{tq`k z9z6TO4~vig_>sdO`p#qTn+Ln4{`uW!y!%_{ZN60a`Sr6iqsveK`*$n;BOiU|y;ofS zv*+o#_tD=wW$Um0@`HN*yPx};?~R-@xKr_Ub#%IQX7|?kt~e@B>2#e>+@!4(rXQWu ztp~Op*k36RAHdvYo7Ci8mC=hetu@>?++QKiQ~Z*4{1(su+yB1JT{Na|PxJd*|9g_V zF6IAs{QjQbGyLkq{}1oq@xQBWGNMXx?)8o1gG1OmU)47}FtTr$7P`RC$=qDIXlQW% zwxnrUri4C;$oL>nK3R_Wi(Qgh$X1%4z^*_=!}RX<%;kv=0ZPzCzNCPoiz(ljGu zt_yZ!DU-Zx8{9u;@Q-aBtqkr%)3BDkY+`795ViWM3XO`!+=mKzvzt`8W<+-4wd}8+ z*iVzwIgDL3(zlOKSMaWCC-0Y6#%~!J-J85#F?u6*PCxC;7JL#P^DdE2SDcLvxrUd#nOaRz4 zIAlYv#&XcCM>VN7rI@XZ7AxbMFxa97mkkaR$?{WT+l1A4!z za?`}%sKhp7^S&7IIzHGxF@&i{gN=>bZ7@6%4~`cU`(`J}+2ZN?pNyEB6)L%VT>%Pd#`up@7bBun{E0s3FEnCm*a|aVq2*|;k>Q~OMq`lP zfi5O`_A!bP@ePv!<4!j*up_<&u^=+h;t!>PGntDqb-rK4yUZc7uK1E&q?RGl7}jEA zV=gNIBD2AL6Z_)6eUjQTOLAE|LMK9;RNsL--nSPxMpR}3dM9z2!Gd_I<#`aQ;O%3+ zyzBBSwr$=Rmm$o4#O>Iwi6Ot=NBJ3WX1%t8##&(;gAUYya9F#gZ>(BsT{c4p$iU-| z%ARG|b7@zMjqIzeP_?kbs!tASr}nQY*_>xW)A#d!HR1ovU3y3o9;|iasT;V9K7O0K z?9!6&pZDL}&n%_Z5S}P0u?mkh>Y-Jt3Zi&p$g7T4ajf{H88B4DsMqx<0=Tb1vcMNK zuebze)?7ee0~3o-yDq9!5KN{j$Us<)*C3o^fkykQF>2u06qW-LgICSQh>nzYhl3mg zW0smmMkR%&i6>0~GlOk(!(d2@0!|xC=Uf zW<0HUppa}ZE5-3?yOpvXS+>u2JT})!g~%d-M~$zn6wCJ|zWhWm`SMiQm~!^hnnPNf z@cC-r8w(j`CFv!QeeR40VTIuXomH|>M<%HEV*txi0iD!C@SVm1^VXHjemmjI4&JrL zD|!DeDjoOQ}BYySTS@?GXt{$|>>_wnDg8_FE4nm063(+sbXhz)N?nFZYzka7RI9dG}<|U>{ zHaaqK<8COQ{>Tp^5}HMl`u;J|psU1K>nE*TnsjGH6p2W2TE1v`Iu)zQVU5ND9Oyf$ zWuQy#mms4}?>)!q`+v=SR$ZGV^!q)+*AafkxlUHpb$^>iZaw=N$3m3>8`xj!M=9q@ z?m>@r-3bdON%2b87~QL!4H+^!arW8UAk3Kg7q`%K?#7K8nw@)YO(VY6Cfr@$*pS=` zD4QyFZo>!V+p+xIbL&t?kgta$_3hRZxvVc$pEXTnxD8ro*Akw)4WV=+>+ZufrNAlB zUgVmj?x=L#*hM?`_wgzX6{1N*@~!(>_48Ui5)KS9ARCy{kjuM1bzUj8mG(%V@Akv1 z+yt?1qU- z{2)~jd5Flc&DK-_fzx#>`Drfng1ULsmCSK5eFY^Zik=d(zR8fow2ew5dPB?&vNNy(iIbp)stOU%!=A> z43rq_F_9wm27@xNCt!9?>|&;BYKl}UF1z)@Te)i-%-Sc4HY0sUi}CJ0924xUKo7Oy znN`kDXlgw2Dbi}aLwHX{UDY8~tW9$ow@D8e!nC0)b&UA3=TiK71np?xrXBJA(GkoA zA)Xp}4Gz<=Y8#TL;!UO0*|mI(&g%0MW+#T3-9u%eg*)SVh1JonP)?(Zq!VK1zC zJcD_L^5nmpa%4;M8SYGN8{DIA;;$d*8fdYBS#~it1=J@ z(gjZMP&|*vGsco}Z9~Qb(C6sBK}p3eGV>sSe#Ioe;3;gf`VL(vWl)Rh3R8#5&bor@M<(R~7Y0rvVWGhd921 zf+B*VpyJ~yIylCwV$e}g;|R=*MttFb*T^WK;!I{Pj`RJk$NumCsZ-t6VYEMxUHgCb zfB*Mmz1P}n`x>%<9xFrD+z#{T8)m8z7hmYTeU2I<5t+kGV8eHis=%Y;xni*zcp}& zS5`Uc=+3S$%#njTWAZHdA(!)xQ!2(Y$Gjf(v-1QAipm(qW>2DV9Ng6BsXJ)Rf|m|Mp}49F6`6yPm^IeUjzM8EQXu`}zo0&ZKV7Gi#m zC3xy#U*{D{!N~h56&si9@G zvN{GFPk+9z&C4mZHor%y^TW9|pP;Td$#J)1CMyq2X~BH5n?l1HF4d4&4X@%0MuMav zi2z-H!#0as%x`}Sb?wU#e3t%OE8u%JM0YA!Yn!@^f@^13$c*)70c-He$4T_*8jp-N zM53>ox6<>dBQDR)Q9ifY%ePTKOnowWOBuul<|DEQSXm|^XgHf@n8exJ7i{ZX zUG=$-y8NS4m6@`UQ+I?0 z00YfNLW0&8&DLlDiKJ*o0JB8RcKcEU`q%n?L3__QbRYrJx^!|1ucllclEy^ckbf1? zN6sn4M|n}$Yynn(%)w!2*M_d60h2+#Nua8mTcB{let0XB>reV+GEg8w zPzu6Q#ZOqr9R~k%k_Qk$(F#oW5!=Bpvr6phdDn>wsZTFT$O=7dV~fJs(+Mu(4=P|9wY`}i}|rK|l@JfFPD;pbhHvMXl0 z``faRk-0EdCd3g>nUseOneVwalB;%ahpR+BTHJcz9)y?Z4{tgh|dd(0_ByZal%#6nMpR!AW8FBv2Iyoq*<>}~6NuI)bS z>f6(MA!$GVo{MN!YjgGP+vn!-d9NL`|6&INu4lwmZs7km)8%#ff>5+q=TEL$7_G&y z+FubuYk{=mM8OCvC2hKPyh>b6m(wUt1VTgMH?j{V`Ij0MN|^lXq|-5ca>`X&72(-V zT$mgm{2Fu-HBmRPKPh>Oh<@U`WJWw^!%%dOY$HaU2nIi?FaW)@u?s%i2r?=EnYJi? zWMe%W(Eu}3cHVHNcX{_Z?`Yqy?y<3}WXM)8b?5mmC8liYxK8AK+}IE3vX5x&Tx*>;_9x_Ogf#duKz1| zPjBS9pF6X3-SpnQH`;+KjX(!C=1+PZ1MigOxe*x1YU>8zw)L0cIuuV~$^+jLS2R<@ z!dQQ7);GJZE=+mJZJOd>h&vJ8vC`$vZv3=^+!b1@)ftSeI>!QT zt}ZQ#`1%je7xK*#pSo;HkIbrQLP*Rk_O-I`c{8kPbO0swAQTz279R#RGZL!RmNag1 zc|<|vR?d>1i6FyN(fb4w68pE>$0lbnLO%TBN!DC6Zu8QqUmv@v@aV6S<5n$bMH9R> z?OMokrtRfynE%bwhj;DSmHx(?CvOBF`ao=aDFADO&zlI}ISc=BBF^{cm-Qya43g*i zAm1-BH~hlKaVOa-I2@ldYx%;w$J+>JUGBzYGA|XDS3LEbX&2}-=uw|{hSZhC&XFJNwD90qy7!jSF)0Z6@eY-|#WJ55vt(M#w^{mFjjnu1RE zW7&6h`_pt3#KX9O@TjPYnAlq$UI63@S?=C;v z=-{uF49HI+tK}1DW;1);O_z12Cc>C!D0LB@fLyX3Cf8E$+1(oUM~g{P-}Mh^0@h%#t?06ZpwU_eK$O$^Y1t1e(R zzcieV4AxNQek9ziJW_{A3ukA)##BF#5Ida_hKQp`r-& z)>*_B;kAY>4S6GjXaVdHl&peYHMQ5$xp;J8g1_loom;=YZMzwkt(W-yP_^F)U+>|0 z4F|*U^5_|-_cN5cdH*{pWyknMO2u>}TugczeF4TQXPOCB89~r*!u6vlWm(}Ro&zNo zHL0bV9J~}~%rTE;?~P0Mc0tyqE?*ttr*&UZ$dF(ise#V5iuO)vD1*6Sk;NcFeO-)t zZ2}CYH;0XWYtljs7?%5O+wYsG*S4WwrT)BXuRcrtE310$(bHzPb-tG8FQL4ive^ra z?k9zsVe6b<-nHUUhrZlinVCH|kdzKA8hzIZB1I@+@?2R`v~@Bl=zZ@K{KnN`FTM zK$8Po%8ekjf%jg8#EaB=uq`(Rt3YHC1l(Zc&}9`#BlCA*`W;0Yd}&jjxF}5+YW`W^ zK{8s>_K6eQI$u-OUr${!-$y7XD6cr#j)C2bHaw4ZmskBH9QJwsM4qoviYEL-wEJC3 z#a=XUSt4IuyDHLDOU-hY;xMTbJN$Lt4@y`>A$weFlD#wXb8N(aXeOWj_g6`zB{9o(0Z^6-wfR%kz=}hE<@8s6VDH z6wN?@C{7t#!ZWIHhtBR}8| zQa+vX*C{0*49oYLM?kvp$prkcARIe&-Sj?wE4GDc_Q2;F8X7o}hLG-w`P1?XzVnpR zKDAAr9)4ym7iuc;Vn*$>qee5_AE#=YdbK|A-%lOcav0|I|aIk3cos3A@WcNHa3iV2UaQb}# zWsX!)Q>clTy!AU^;2 ze5ZTH*MIZ&vHo&m@o$3mf{)GH2mg)_yqfkt9!T$|W0J1tA9y$Iwx#N&loA(vS~q9S5+QOf_WV zK+9^PW__cG{V5#;)3GnvTg0KUcQ4Lh)UxzUu!^fpv=U~te=*yPzAz@y3v&*+J?5A8 z?maudO5%_hP>E*`0~Kp$fh4$8?i|SEepRu}hcRA5J82Wx0q0Z$chjJM4bEEK*2E-% z(A5kd>A84K_=xr%LIoQVmGB6;o1B1Q|Sx!gB0 zGvYtIgT4Rmd5*K~b*IlxfptU6xn+{$}9=;4K02H>uMkHAAlM`CMd&0KCvX2dEU3s-z~ z@bDum^{%+WjssqCg|?fMR#GMmqvViFZqBj>HsVTid@Iu?S`-I`h$n_@b?+UsDMpAb z`X#suyoST?cC-?7@naCy+a@rq`QF1^6$737@t>$4rGD92KksU5V0-G5H(@+nUAbOw zq^;~_WzV3BHLyNtAOlyu2{VImUG> zZ{dB+OR-3~Hi>&*wCFPBX1KP4-xa6!DoWWQv@X>WLQ2{T_yFyM6PmxRvfLSD!8k4( z`abP`Jiu3Cz~ETrfIvILjP>VSV+e`p$653REs?upGp05}5Lh6^{s7m?LnxGn7)qp3 zT;$q08T15Z=~|186jRb;alClcyK%{7@wZY+mew~H@nMLgcMJO`5=jdvWjj;w&I8TwIYfzqz#@UneBmK}m)(EdmauN(xn*2>!w<0H_;YL#;@V<7 zs3-`hA%=CXr=8^g1Qin6omxttqcW4kC(7>wMVe#-3p-ITHBSeSSGLfkF;C%C`6uT% zE~yl?ko3FG&v2mEQ-CPB3qLi9R}E^MSs?Yu|8F28BUISrhh1d?Wy^*#uLCpgb+bcO z{n@!Wa)0r?e$TC1v=o^o+o%QfnKws=ZU_yrG!tX1JJ3Q`z*geDR`(*#X;R^~*zkSp z+HECg#pJpDLzo9EJ25yjyMUwkl;}1iI;k9FId8g~szO2rcL`U#FD*-8t{o8)eKDp` zCdOp-5%p`Ua8zT09~@z~kubK!coc#wsmev#NrgaaK5Yt=}UGgCNXAuK|W zv56f5?!N?9BrokGp5z%jKG7a$uk(oYt*udyc1M`|IZD}dlAdk0Hj`Uh8TJ!-T6-VIvD?tH)=J&-(5$DtoO!D!XVzA%{?*Xn4<9WlPDz0fIPxzDTN9 zA`bogo;ILSHckx0=X%{cT`$Nr-3(4&MmzD_pQjWYeuh$T|NL{?EN4}|zxkdB1RR)3 zNGr$4&M6LS7PfmH=YLGPcgy(X(IZEnzqfnE72^`EEkA~+fN4kx=NXt_c5wvfaR?bm zjAQ%EfG`!b3Iz6OL{0_kgkaYJl+PAQgXy>9l(3V9{Nl)y%U`*9%##^>MSh?lacfKc zG7H(|5dGUkRmm2dhzgv1<}10IH63>;25?ZMu_s)tdS(&)5kp3S^gmt{E7NK6ez%@_kc^SGfmVddH$@sTxU-l zyPo=So_`Nz&13GPE}VSAc`r{8|DTpXzd z1yLQP7;u@UCwCaqc0jP<37&n9(xNSF8Co+jJE2hkWh15vd@9LPy zpovWc=xIT745oJAGM~lFViLDfT}6lxik{?GZ6X#uyHQ*4RCm) zSu-=aF2P&I%LHzI3!%j_{cIv;AWeP5CLxG0K!lCe}%V%_<0O z*cw}o5FU0pI%;K;Y@1jHrm6L*b)7lEj>ZmUkXwL`Da6hCnD#Bk44(`HZON`qvp``W zBaf31>7b9W-2f$&Z;5O*QdEpe>ldSQfCiD}l4Qu;r}tYYq>Nb}ZRMT1Y4)xO#C-HK znJ*iWxf~y~88Tx@*n(yq@AEm@8d&Nmp^O73u+tx}x;g024A)G$%H2Ue z(PDbjDve?1lEO^XB4kD)Dwm45tY!vNUo!!i z{pIq9X|a8mjTGl9_4)#WoS?FL+X=kOElv#lBg2Yw(x%j{B%7iPV0aM)sb;ItQ%Hoh zk0`3y1&;ZPG8wV4z^c@a6uCbk(Mh^J`3L;e6%ChQ6a;Sx@ACNNDS1CUOQa@|Qk~h~ zH^_7fWJ^(n;qbqpnrDfNo>$PHrPNg`fe}KX9E#;)1<$u(WUx;P2<30xyZ407I^*u> z-n?j;@rZ=NYm4G*hA98F%R>%i|cqv)0{Y_!BwRHgD-3ik^2D*`^@L(!i5%vTuo$<<#j7^PEGWBm!#2d``2xKV3?*qkKg4#_%2HEfP{_BV8Lh!_i`M7 z>fC^QmO%@JG_koYyIgY&qcl;FLuJD(Dp@GB>Kam3GO3ve#1i_R-dGGf-%*xh=08Y=}-A~ zrb}1?r%@OIVwuJz(_TgJ?Eq~itEuEMhUkJ+Z_nM{-;_a=sBWr;(vCw1C~VQZ4*s1m zMBmN(&tg2a90w&o#gMSdOJLMFI+?ibfd;Ge0Lo%(_Vf?%{xy0(6cz@MS&Y(F$FJo2 z{uZZ6ws|o{^Zh6}sq#u1vAlNtV1~H8#dxXM*>nAGJs8rU@G;vJw2Z zP>s+tmsV2Y9F(Xb+&Cov<_ewJQ7sslNc=oZE2Iv_I#`J zygG685t)__#w^A)i3!c&hW*nACK=!1BR8rza%_5B<-udqDyAdJ6LMsGL~NJ9!e-Rz zypQiG9)_i`X*c93y4|N+aaQQC`6a%vZ*57dIP_x?#%og z)NsRUOcT+=pwJ{|7Z#P!W&u)zw`*zT{Gu!uM4Oyk8k{;ca|)lJ|D{9W9L}H9-HL-y z`~pTi5wYB*cARH0H>Fd+rxS2i&!0U(4s=egtt`D1X(FoA)F!uq9*%2tg|I5U27)msnXBw zX|^B>s5Lu6WOc5go<3IXOl9;_jTljWZg2umyICKV>1AXaBn3O(rs4PpvYDS}gZ(vT z$^00+Di%`nvY`@+=jqbAuO?f1v3F5q!^8>$wB+f z3b#t;`7_Fao+b_8jW@%_3Byq>-wQubqqTX8Yg**k%gAR>XyeUaP8OjP1L-pAirum# z+A%}&N5pyU{62cuqPgsFb8O~>WI`h5is10ZU^&S%&`G*8^`0q zEBy*GTynGVZUhU_#!?(9(!1q$udGwU^9`zk=54nj_`oSutXy%(K%`On- z!S8fg{d+0vvvBuQmyPi0_qaat3QEOSW&f|G{w37kKq)=sFDP}s{fMO#Bwzw^O?0UT z)Z=~Oh69ANfM@qp!@NVZ!!=bU7BF?%aMU}Hkib#ecsEP~h&xLi%^X+s!;LG3MR1#tZY1-kRxfj3?b;w zc>vn>Udp0PLEkaj8Pvf3b|MCFl{NF}Ix2e;t%Jq(L1G77jcX>nbWT`mbO(KV(_;vQ z=aQs}7%?fq$f?!|7f_f<(-t95t?Bap#HShitgN09h6!@akiOxp5!j04$3%v(yG*I9 z9K#E%r)&lShk$XdrHHYm-)F(%c}?3SiaY5`^qu#!$>z<|J-;NP6vhW4#_?T)g99!S zksrYVf6Tem1f%piuX}^X`6X=s8ui-W@+s;Pnez9ie3$2w%=*_-7f!v2QgZH(Mg1Qs zWnVx1-7b&5lu|nXuTaYGlJ7s}joUiUtm=td<7Na}U###X_XbFi@uOL*?(AveB`*TQ z1{qo+VAkaVy|D41wzpVcj5e{B(`Pt519$Cwknu`S$?*@q=o}l7t58Ge(2+}?&Zp4xP zykkq}g4Ep6%m|O4HEZroaWTu2IJBErzU@Zn3%aQhH6Dt9DEs)9AW*M6ANL?Shc_qB zbA|OUtt+s7Q>-Nxn04G;t@o#g>fP^k-gS;ryy}}Nm7LF_m1d!QR1K>Sn-u6xlYYUveAp1Nh3|73mGc^2m&Dz-(N630 zo0QL>{2R)eRzKw}9;2B3K}m#Al5Sd$<}h(@6(Tn%RVRvHeKYzR%9PP9eWs-> zrT-&j@uD=@AS(%BgN~F~vERPGsrC@VD;NJXibL+3QKwL0QpPD1Oax-1#^9Z9rYsa8 zCG~@iYJips{Qw#5s|6ry-4`zrx5K?3Wc?u=N%UB@b@RwYaVpP_qXE) zzn;4M6K|uGkN!6(Ur@dOxVO4If0FWO^*rJFXL&9fdRPLsf%iz7sVSOfZHM88DX6{d z0L_I^EsD4>I3+tLHiE4JoJS0+wTvM_3`{yc#Vx*E?S|1=4kFg9q6sDK77}|LSOv8D zZbY$^TqfnZ86`SRBTv_#hR>r=q%C%t7MdhmC7d*WsD>$J!em+w@=8y!qe5~ikSIK; zS`z)K!CF7!R!#jp+B#cx)Fl5YJMtl#-JH=?&DKYRJ0`}blqDF0lv$P+-qy}n`WEVS z{@kCZUZ2VNy=ecBl#+KRe!$CjP}aQXlhmJB!Pw{jpu^s{*_+^pFyNB<$4I#^d0GkC zFbN?Z_Mc3x+g-oB_#m z(*d#^(cmftzt^qT`2g@<&pdzduD;>n-0(z1Gu`)w({*g*tYH)Xh;KcXm^25~|#q9YnZC;KAN^z`hTy|@&)-gr1 zEf|+m?iwiAI>mpd6wJNwN8IN64obzi z{ZC5y6BA~)YLngZqu$>)P(F(H$8`;gVIjV6ZaO9Y)kMe=tTsx^ZJSU5Mbk@DXhC_a zRNNv0(X8boqWLXxpJ#Q3E_bpekx5ui%~(XG1m+lz60uM4PgW~gm@|h9OEM}BMQ_?6 z4R>ml!;%v5k=E%76DP?9gMOEzeKD*Orl~`gFb4$`c+#hSo|ErmjLc(zW0IS6Js2$F z(7}wT+8>uw6HG*?z7Fbk&mnABgvek4lE-Y3?Tn|=>)OiFg6b=~a*{T=(<@8o*3RgJ zxt7(C_v^eX1+mv{VhpB+-Lu*2==WvThmPS5u4}7Yt09c9A-A6H4K> zY(IK0R5PyM>pbPh+ObFbs4HF|;WhcsZ9Es8Z>CER+eKePd*Q?HQ;PrXcvqZV zD5o~WPx3M06c>`NS~3lHo!e@X&#EQVbbq3KmSBat_UL_-kFNIQ{-JgWD_`-G?ReiA z>hfC+@8yu%Si<**?OnsV%3sr8ZO_`Oz3V0fjg)r9JF83S9Qii5qhQffmW4XuAvt{l zg?6X5fTaQOb8=zB1;a00WoaDR@3#EVpt-*rv%G*XT}XhaGSiH227K6*HZ|K0vtG$? z6+h_Lqu!j^wy&3k<#t~3Q*9gjtEkuZi~Fg|?(yjV$7SK8lvh=7^^Md=!Pz@`F4=oX zk>s4c92JKfH={^=?DvvKGL%TPKyW_}uEjHZW>R|Nf~~zD#-W$|wByuIQ`UO+=ZZsH z_Pa2(X3xz-+1vdy?Xy9f`92bFH}iQMB#2>UNs4^&d=7bwHz3w#eqQZB;?_km&!ic# zfo5Wtf_Ff@!Y>%Phg-mT?bGS?1?P*~*STe2N6dF~zlJO0N9>M6As1&Bmvsd=sOI6;q@z|uwQJ9=OM-rhd!-sHwQQ7Wvf?Zc@=`^6&miUXT zOp-;y$4HRU{Iae@Ro5n#pa9PjOs721d_w(OEFHE7QW48P#aLr?YKzoKRJdjSKbyHZ zbZY!$_j%p17)>uwVwIe7`KXZtS9g%;r@u=35x?oD+3KfM)>r%B?t6gM%PU;}1M0%* zo$qe*f`im0Uwkj+7gg=wMqRejgyr9$E`9q+KkImThH_{1`x~iC4*FS2`KSJzQueaX zQYudJVd#Q8Nf$F%)(!|>hg3!mO5i&uufxv`#rqD~6aJ<3j!8RHXCqF@erz7zxp;nu z*^Ux|W7{_%df}kPi{v4mkzpNfh9vJYygH9=iriihQ^L4{D-9q$ffNdZ77+1WF|L7= zlUCatCGYvSZ9n6E)N4ANe#MXQyv{3n)q7m-P3uoBawg9+%buchi(J=8W62>vClgjH z2{e~%h%L3r-bDpaVKD9<*X)F~RGnEV_oaS=7I4jFnqfoA43A|>$I!kMJJFXys~Rn| zUPNY?8{k|!W{~ph8<@aa&JGVs~r&Rr?DeLxsL|r;w z(#X`g#xEGd(h@8#HG&21Lp%y}?~T9EmgR=yQGR3S_s!x^Omc;_$u+&1G~%Xs5LRbe zPeNYiPZM@Ct&qbe&dFciByP?4tn3pmf(Uy+w9--jxfM~yeXYe(lEE1S6Yh?yO{}GI%0ffEgUez{%5hbG5QF~lLZ_UH{+7h61K0Sa744tFe~~e6i$}F zeX%gD&h_`U_4=1nSA12%+^-MSAM=ZC`&pj#9FEtzmUhB{H&6T3%?>zm z%M?@Z+)X>lM@JU1?Q!Q~@h`+Vig)w-llfi!7|;}}nEX+T&ybu+e6cTa9@-8GL;Zh{ z_n#f_NAz!D9_4CnJb-s1Hnk=as0k(y$QB~DyM~mT;#FtcFS~DDrKvl)ffm_Y4|wq6b! zqfNd3R0oK5HA21bZ(cx?u^!E_{v0B?TL_h@Z;N1tPx%$c+eJ$8y!TOxCzW+CaFZ+V zBlXqf9MpR~*JZ+CpoL{K^9}ZvduS*5UHwWtk{F%<6-2&mIOB37EnYeA5g+W+kL;4_ zr~DRS^^i@D21#P|$YeJbL~si4=-<0|Up9;J*!z?rQ|WC*(ZgCvXG5AF7wa0a$ep4Z z(u4GONd2WC?u1^)w~7p{c6)x+@pVe~Zsx>2NJwo9AMVpmaPRHRvf4Kc;Xn*tb(%Ib zfM%V$X|G(Po3}4rt9j?%R{L0lW*nvS2V)#Z;p2t26!?+BS9ab)p*!2|3pt&ALE9x} z%25Q~6mipjK<|3mDgRqpFZHS0wZ+XV*UCwYjVss4xhEyBJYzx6(9b^lF*q=W5pM*X zyqn(@M_jE-voj3+mmZl0Vahgnw5X= zbDK`{UFDW&YzroA(d-7=2_KqvAtGpttC20!PIR7eHIlFZCNu|mR{(gep6eNS7)&^? zG?JF=&47hhMd0Vhw3ok`Zz-Sc$0=psO^0$rH!M^#Z2ZmM)3o!LU-SKM<`eU-2C4u!|(d`*ti7(=$zM%KxboEM!w46wL|#^E`StPPEY z_HK-~70rze(;l=<5T?3w?2$vb1T}{J(|h4dA;0Beve{!xBpE4|Fay z^wF?V*ac(+%R7#e{EeD!+N5v}zy;FwZV zTCQgr$rGnmu^0^zkLPAP>+KrxPd7Q{*`TYs9KxHs(k{vA=B;z91eyL5`&`?gpZ@D@ zd%`QI%Wjpj;0LK6sOnGn_fAjq_dM@?4bSBVejcUd*OQcj(^pVFhVu24PoR7YrR0Uo z+jH1r{0cY;Mxih%5tz=C0$JpkGaxol$|#x!hJptx2ipi60bsH+m_G}{3$LiCLY%8{ zP3cl#Ov#aFE(AYgxc+y5L*}4SLzK4wGpTV#6w^BFz}U6{(A-97;fnd5*=XLZ-nQYEzPzL zS&jnJ3J!I3haiy?YIHeI0+u{<#>twg^PCqwn-4flY>F=8ge}dEu3pY-o-X-qU~J+y z9F~8Cvi8;f8THyPv+XxM{`$F;vaQ`iIYF5){!!|6?9yg1|A_ayY%&b9b&BPcY}m|8{a5{E88;9&T=nL)ZXJsF7$ zh=2fNofl)6{yM&N(B(W)#Y$F&QCV8c=W!j*w5`g6IeC^+e1w zakcZJ-}QTQ^twZlxMfmI6C;*D@8)0{ki^df&x3WdmC>hIZ!f9C_VzkGE2 zJ2~K@^u5;bA=(M{TjP<&KD#JWi2R-k3J&_JmEcAk*Wv8_?th59DhcK>tD;f{QDA1Z z)RLMqH)HZ~{`Kicyl#B+e)zOR__2n=kWKnsyr($8;rFyU^@@CycBY?jIM7524i6{= zv#y#TUw6tgMTU`F?#{8kE(z%O#$^Je&m!dsIVHAeT2*K8!g*;g62_C3TEB|9LQ>c-n_ z8=F#d_Mxi_%D4bwb?;sl04v4nnE9sXQDXG%4R@7=W)nM01fe=Oo)bSZckGm&9c6Or z6{mD{7v{!yTkVV(DFDkZ2AQ8@QuJ|5=7Fl8O&Va!`aQ?zamwcdD|b`YXCv>Wehtr) zo+O|6Yn~tE`R)(8EODIjTIz40l+XJYDZ7+^NGV%Q(hJXbC|Eh4`*>k6yR==NYDZ2b zDkTs^_>G`%k)&Im`ALMOfkN3_JvSYsMrNG(MZ6AV3gSKsVgTJyVId7J>5i>Q&{|)$ zWEp1%B*O!^9kTg|0yKpyF%WQxKtVjCN(2PBHG@z*`tUHu%taVoW09)+#==a##OxM^ zwGphLHdWGj0M!yLuU;Co3;8b<+Aj#(!1)kFx1hbi_QrOdg%3G@NLU<()gRz@>A8PT zDVhHTANF|AAE2!De&{BfkhGIb0$%ECI*&2fy2@aMW1sjGpj~R_U=7kDK_MQ zTOAx=T8AzDoY{|R{N@I<9mIvp#CkvsM{{kj2hYsj71MUsY8sVCykfn&0}}uYo3%SR zzjAW@tX2wL9_d(7SVaEApWV$BX0Mb3tWTv|^^h;V9}1V$PF9SNJoV}quF%Z)!l6W> zhayc^R@Rq^Hw}Xh&JdME1v<9v;Y0CqaIt_Tz&*1n z%A^nEMzfUM)N3!I8BbYa*gQnY1$Lf&W>&&C4pvwDcAZf2s_0Zm1;~gFpIIVX8b6G2 z6?rdHMJmy(?!x0jm_F2xi)(}_jhWpJSGbr8b{G*6FoPT??=Vz4#eOt<=>Z5^2{!L*qiF^q`i9+@@8fc!^QKa|EP^m!?wZ1ucu9VOw)TP z#sBW7d@|*~=6%V+iFbiVPQfN<>Na9|23yDfNafVbrSE>He|HCbv=Ez}RxV|G8+5eO=eTT{n$TfOM(cPy66d zjA|c18|V8jR_v2J03Gz@4o3whUzo0WrH;k3;!p+zLS3A^^rMw@04Lr*J{Qw zrL=uYn?5xd#M2wOl(K2QVz~&pbaZwV247CRc(7v{kzC%efMoeA5nxUZdIv<6+Lx;H z+vKrh(}J7#GQOSF+J1t%`733Bhfqb=?K5y;dNTeVCQF@~>mOzU`#m@?(qP53=gL#? zJTK&v@m_C}ED?%P&fS^k4tj=m5h>s_4wn|XWBqA4_7r`lU;A8uAule(ivwdEz=sv9 zwG3ohP3UZ6S1Ld+{SjVQ68J9w z`_&is%HPy?!2#KSaYnL<;&UxCLwFZNr+CTaQvU`=T`d3r&p#>G#}i3Ugfu~0hys2be|0?5vfLqr(@!A+#*{~T z!rRXAuJf8QS&%Jly--!+M@f!rIyjJm>#}%G9Af$8SqT0Ipc~JIZX_M~N9wvyc;83e zw)Gmynjic$bsbAu$Ckv44snJTJs{o9NXH zd4+-NO}m^@`+5GyXg0(h|uYFDk=-tIU| z3JnADi+IymZqO!#fdwBR=;%>}5@xip_mrcmx9_=-@iUiSsc8f__k6QrCth<<5g>JqNJB71)asom z45j+{!oPBwcPpjpKTRoH(MKtdQuaRKaVVDULSlpD-3C1LBysU*$rz^GIFewQtM1Sg zqoB_HW0UcSj`{bO^sShI;}&07k9RuV|LVS==~%ogxe>=AV*LPs zar=NN>wkjwm-E+nz>!Prh*%n0V@y#1jpWo6-DVf;ZDJsJUok)X;|!L@W%>5n!|L2e zJNY-qyUf;)qbft_x-tnz+8+bJ6b``8dYGLDd0%Ue!)_hw(0s*XR%w zf9-zU{oMR?iYv2cSBeeGX#q3!oZa4jnf8}y+)%GrBAIrK9PKU&=V9lK@t}IIcyvQO7@w%i$vU+jxsktQH&Ucl2;Zu}NT()Oas|QfnOODR( zf09msMz6bW$vLqC;{A==F+KjZ=_d##Q)yl_#0xVC`aict6Zg#f&tW|Fem&pj&|h~9 z8cjzwqyTIaFN6+e6yp7N(U1J-8~Q0P)V-ME$adzBJ9?ky{XL`Juf8oB5^ofODzZ^_ zkRF|Mp)eI@)H}>ELA;BhhOsfk)uG9_;9bX0L8rPc^$kS7uW2r0AT zVCdJZ?->lRB(R*a|EhUj8?nA9kz)qufexrI;a1Q+@H3#IzoAPm*3SET z*Nr;OhB^*{nWkPTZGc;^V`SGlePQm4C^%~T-N zR>JmiXsi$gN@N|l?S;hu?%2uqO-M`!YMNR?IA>hdr>qwX8Zi+Nu=a_m4P+Lvj@TI8 zCBXLiIUBBled*E(DK6GTBY-HPN9l|f(KI~_(&+u`-2LqFcQoTV8`%a#;yAQrGq;1P z`bj+_wMmW9M@cFf(ecu>U@*?X)0cJkfubu67dt0bY= zi?FarM%8d_R~z`JGYRH%+{7O^qUxgiAWGf-~^r%GegF3aJ%Vq z^mDS@itN~%@0b~snc2D`+YA>coI1qBf(-Nzq6Gz;o$yqIo={1LT6GA;blpDkCWdQ_ zE||d#?wM)D%GQ@38Yb;VJ~-?B`{5*C@)#;g z1Y~dMO`b@*FmWz^atm|{a!q1P+dl6L-5|cq`>-zaaoaI`2sn1clnh$ffmBtAXt_m6JuJl9(9l#RyJ-tJ;7k$53%z_{gLfKXgvYsXsTMYyD%V;o z3wssiv`|4Qqat2uv~m`J$doiTUn~i|7~AxJcbxx8%KBdOt@7Ig3&he_>(!W8wFia! zcO3$JO&=B*)EjpRpkRQ=CO+jM_YLNrOi@=XaMs^SU3-`H&GroM7zg~=oDhBFnvHc& zB<+re#n!C^x$0ypgWmQbJ(1^04@4ljlW zh8-g?1@6dnSf5A!52xwJDP>>Hb@&$Qb=<`-QNO(UeY15!j8u}u8i5J(vs|?W-h1OC zK-2W?P*M{01<{^X29X28-$bF{_ctuvOt`GR-|OuDpKg1;nX=By{)5y7<%bb|F(VBZ9o}^7lSc&t2WF0 z{-u;M=t->z0MIb=s?cePWrn5NDQ~vZ%+bbHGW^>JXAxQx4fTzC_=bGiKS?QG8FGwl zUa2_pxv+7>z&}e{*#U?TOe!wQ5Q8*{pZ{3oy}dE^j}CJ~^OST!FWmdd?@yqd;s{))h-OJzB}rSJ7C|RUzpov{jqm3{LY){Pd2(~EH{WkP^S>C zpeuYnZ9p$uALukL^nvy|?^yOBFoK0~__kKi-TxKmx^o6)b=*qgg4(q*R^y-Z7&B=& z@p|Wa-WNS8-zo3&r8WmN7mTY;*u8j9b1U!B+{6N)QW8Qfy{O&2v{(FV-9CU>)`5!q z_=-J9d*K~U$>Etg}GG^7Fj!QO;%sJKIdoiSL?n!Y<6XK#R$bt%)`;@y8UiK z*~d39ik9cA`$WL9YXu)&$Is(sp#HIaRodhxn%1sLFy5XyK&qIqOOP5bcnsPPsKHK7 z>()+U-}puxvVofL^}fY`9V6R&%?DpYUAoUlD7A0GOUx$#QdzhVeWGjDtU0=fIA@pB z_sPOBBb}n?G-)|AbvacCNePfHA0r(}RV|nX;uCFca zT3)g|iIR6$_xAh!#U(`>aC!9Hyd9H=;_v6@l zf!Nr|O^&Zm5=(b$Il>;~e^;?y!n`cXgLzK5hih-wudUbF_sJa`S-A?kH6}T1O2@`- zr8gde|Jy!qdn?}l+0+%E`fn(|h%)*3J=CR({|V(2tLJ}9UAq0A&-eGT{kKzp49~xh zQiSOJlwVN2_uJGJ51;K*PWXGCKbGg6FW7GUy-TV0^Q>FyEPkJt$veiv;feDWqXzN_ z^Np*@C{m#=l-C5fH4+S(8!bfL)e1p)qo6{p@^GRYV?;%F$*-1EqA`lRpi4N@$cchO z_Jif0@(oomhewC^CzWzs)BsG|Ws~ZTotA}aQS{n4C8QM-ee=pxU-Mhd)=JH}%O)8! z8~M_$#JCkYxXWm8b};msb*1D8O+TI-A>ps+292*$GrXE%ITSLZj1KB+#?>#%>mjDG z+I!?9wzp!fk5kv#j)aY*d2itPqpIg`p)TH^?GlFWqPIz6d}q6estyB+YQLLbLtY5zk0}*xTLH z+jI4^L|VF6ba(fjb#?dGexBd~&L(tMNmB$~0Z_9G=ec8g$J`ffZ^tlG7u|V~Qa;t( z({2CPc8giQiBjh~^Lg&|JkJFaE0mIZ@1d06C+P$n-xelvc{N^et(NfP{e6Z-w9*pj#RzTN7RL0$iOU{E{`g9N}3c4?wkuI>fh?^e&qI+|KK+2@;Uz; z<(E+A{1WDq&rjhU+ML?e>3x$Y7%(+Krm5nlVZK0icvTe@mbA<$X!PkOpEL>xeC+;7 zTI&`jsXcNVYYp^40a3IS1c?$S)2^v=^gT>7ndHV?7s0M>eTD#wqni!&`&vCYiJXBx|=-nYSF6Td-3Qhod zQ!U7wAUFr*Rox`(ya4arB{QnY-69jY4kfy0m9HG!@6oUJsfK$d{4h4pQPhOC3R;w| zNPt{}oPpTL))Pu@G~C=FZ)AI>yrI2^JTRR8k-+C;NWHknEk2lF)bqUa>PNR>@Ez1e z+aIEQA!Wj1(zs#1e&8|NJ3Fg(3A0N)mrVHzO64_3zWyHSUrGHxQ+^@kM<^A8x&5)u zW3H!^Phpu-=cAK1BrJjkTfx%C9)P^7gw=9apM&$}{l0fhLSM-k>J6f^DujxJO zs%KYh@wpe^i#LAB_Lj~5yD!2Qzl-*=L*<(0S`G8XAERBJ3u01%axQT=+A3-kFKh$+ zy%yu@j$MIi?Fz&FVS~QnM(n=wU5QL_?rBWT|{h*B}V)f%?NixOLA?I7wUh@Wn) zk6t3AKol-SfdJtY42C7pWY&{84u-XvvYOfdiC@@~QnRU|u?ZtJB}(L}^BLAua$m0L zn2=@ryvU(4SUU*67h`CN7J-xz? z1vHnI@P72V6^>P~n`cRys`x%>7sJ%!n&(_oQIBU|fO?Q~`0?%eUW|VHFzpYFSdU@) z@fWlkK|e-|q+-?;C21{}{Z?W}LRPGV?@149#AfgE0@hWXMy~_}^@^2(g{uy=23)g(-*Km z@xCeyDDQU6?R`Po%b$;9esSaWN`ef8+hx&%I{Q;3RL0fhHw&QJwXn2w2WgDzMpIib zJ*FX(?YizsZrjWKO#JQ_aIrg$^IOHRBq+I>Ie zNZX=&?JAW&u)8r4j2Cl&$sFM<4szm_XIU8`L5-Vu7)quuX0K_s9wCRrQOc*lwiH=( z!{*-1#TsGo9=*jI*r}{I@Rr81Y~kCi(cDwEx9&fA74;fNH?s%-GVLTI<(@qD|8Cnm zlHcZ@B+l-ko%GZfQ$Ct9akik8!~ZcJ9kuHk@h%X0}~<>r0NhP=}ce|L&o^=GXW& ziwTx&2y%l75<8vyXeXbqfWtX~plRN-=+opuewW{enVS2eiSjCRL2eIX*l>Du54bB9 zb1xFsd34Z~aO-v+`Q_U^Pg$@CAG;kkuz^hQyX*|<7cT4M!|W{c`{Vh2N(WPM40)Vk zTY=!`&ONlVylm;u)owKUb?07wm;bmdewzox}K z{I2yIZ-!>M9%ffLbG1>4?7W-y&#?C9eUwu=l36QzOKrnU`$38-KA?~CzWb+H;G&0l zdI`?%pbriAlf+5~slrt0<3jGhu}gyKwAcm3FM3D)f%vW0eVXg7rzmApAD*`>NO-U- zMMfik7wz5OUFN-ti3ufKcA_;MJu4@Ra5zh6mCdz)qa8Y+p9kniK7(=IOFc=82$nNBWhp#ZpgKc<09<~|eae+p?0bP1`rB{) zm3jJfgqfqZH^kWhx6XaMf7R&m*c7!n7aEJXHF>}DuiT!l9WE>7VvIsor-_=e1g_WB zLH9ACr4^CUfcPVG`;MF?#KsdCG(O;2+>D%9*`+{rjsYN;n~~h5WrcYYw#^r|0bV`A7#7fnd>?eIoTZsySft#1oa;f z=6E)i&bI*v(||+r>0vwaNBLdnimvQ#?_5v0L@9j8_HUpr*vxwJ^zngqvFxL5l{Tjl1p5cw{;VuuBW%z(fBlGn zZ?oU-m{ZBNEJz&^ZrAfw>gQ*VGm0lwWf*)=u5dXQNC>nF@y3Zm%*CT+ZWN00TA8Y)C zWt$*RE9uRP3%XCM4JUTQEZ*^;LGy@kXoE-( znNaf}3U<_fz&%NoJVO=2zvrLgyfZQWkT+!xF-^s++_LoI@8cE+KX+^(eMy8&Q4JMn ziHr>*vqAqVmiidWwQ_ELbD;{AH1D1wR);F_bf>Z-BhJ(T zOZq_7zl%*Z^}YM3+E_VPf8u3vNv%35Y=Tm{(Q7F+?hjMSMsfKw+^%#7<(1UmLaA~59;Iv@=>vG| zn2&pma!SuBYZ)i=uD_4xvQs^3hx-zSWgh5{uyRJEH@NXI6&{u@J^KfYYfIdr;t5T< z!om!|3DG~H>P7!KbO}ng0;ClzZl(EV@b=FQU%z}sJC^oS)a&zw1#X_{F-4of&Bfql z7)}n+pJeBRlhf2CJHLriaF;SM)|x!i6S)PT?P4jrPTToSQ)bYMJmZB68ywNXu#*%j zIG5k?t%JM^=S8gycnXs$u@!~64O=OToRczRN?#l0o_Z`0dCVu92tJkEV=l9n{0eA} z;sc`Ch13^%?oS$ePE13R)U80@PKd7p_LIaWg|$wMo_-F!bpCj!)1<3*xxSt>X{)sH z1n(&x>=!BJ*Bpk~ONG&-VShk>vVA{9Y4)xmn0#VyyPYBYI!e*Dgvr9mHYiN81=JSR zeaDt(F+PibVK^NU+v7aJbOMsztSt=t8rD{TZ_~yw{m{~M_Qg(#RMvtN2p7;3d!0w@ zcKfp(SCiZoRs?WjR%Rw$?aPQcwSv(U^AFEC=q(F|5Di&v=rr5Box~*GnSR9!IXX7a zr6((<_2=wNT6K$8`07iK4Hnt}_<-b(6;idirRSdLw>`&Ggq3VMMMi-h&U^B6Yxz0u z?N_K;vLqRP$(6A(h@6uMKiHbPSGm2B@3eZhlP@J4L#`yG8@phAgGLwzgfTK`L3~lNazE;|d`<3M_I1vWQ3J<&g1BBCdbxi3=c8}$tB6Vp8Ra5b&bugnTkTQ zbnixn6=y#NyBRVamIphDvs3s*h@5OyDYpQP5cEd7aw@?R3*xiK%BX-VBVRRj+SIaI z2NtyJT~qNwF)aObUdeovV=CwOebl8#d@{;O-?3_a6#>F+4NJ396{ByPw%LY6C5eL; zr4g|mp4^6|i8c58juUn5;?P1Kb6G7@N|Dp7`;hf!JzcU)A$F8Z2L5pIupBn~h?z?( zPcDGv3GqcC9f(3@;0JThX~%55hq~6}QD5U{Gn5cxRm4O|*R<%Oww#DM0}Fk*FA8Un zMCkdn=!coYdYy0Jec|gw!oF~>HD@~F{hV;1dFNi<)A^wC9(@|WAny{h)3x2OwC1%> z(_ZHWG{iE|L>6#X!?kc?_uaTz3`k_}IABZ)CpNF_i)9$|k#zSs?6>;etUoBbrl)U- zk=T~n^f)I=KVQrEEO5Z7fVOUESjM;j+z@X@4K5bwKKk3=?oXfQd}#U&z2Ua!y6#$i z*W1xBhDI;QGqh8_sZs4>U5wTDX(zcf#HCXht$?4yURYX<89zvUz?B&$g9t^s8N93P z8qi~!Y2@CKZBCS|A5z(t!>8EF)_FpAWm#m?+7dse)OJ?5a1zojb%E76GrNE|<5tfy zhLj1VAm>2b;j^KM9p4tQ$`7b-L7{iOYv~l7$ov)*9j+6X%rbeqa3nt_9BR6koe%dF zMlMBlv%WvhI*Sh^jru5c#hgBUugBr#^X1iT7B6u-&kt4YQ&0F|o*&?O%JTO3~ zm=64pbS=zK>)m!u=7Qvk2xn@v-!N`-ltA)NDbxOlfwEKcWU-nj^_cMysb$ELoQKu` zWM!}ClG@vbsqE^$aBzNa_i%TN@m4#wqm7P0zcFw}MO(}4l7WaCCvS=^HSjj1WTxZ8 zNr`h)Y*pxBb!kP+OdCyVF62Jp^Whi+ITKJ5Pg=%I_b-%FyR^D>Xry*9!^r`0Ja$2~ zy6V|I0<9awcnpr+x}$UbwQd(p+VDNprKA2irR<$oU)T284%;M>mh@>iN&BCplur4_ zl(M&8{XCZmUQhYO)ZaiUd+5h0rMu;KllDAi-*(ISbQR?b`27`>%IWy?l!~$bqbSox zk?()r*E%msnxz;cK*vaJx?Bn*X}N<`ZIOJZmDG4cbUQ@B`}$UZvVB%~-+Hh31OrZ5 z!0WrOcb{Ugn^FnNX{&y)nVWpB6!cjz|K;iI$`h(N+-^MlNf->uIsl1q|_# zK_(i3P`3DK321TreAo<4gt%f5_25LM$OM!5n)PQw4X;3P>ivxo>m6(nC)Won0SRTM zD<lHX6sts=nnAU7qz8VCq} zod5IZafG<#arXoLB4wTX?!)o?%lEr2HgPfO@7M5L^z;r&(cS$0ebmjrbYOey9_hs4 z?L3#?>KLVLxNoAA4d{<4MR%Wc(4W7AQuKG2?!JcSqA3OU-BT@*r8;_*7+vER=UA0! z3C4FJv~S6k<&@}tWel=(p1>R^k8R#`M?ZL6vEhQTCL;2K?sTaTzHx)}CqteKiL>t) zd4~~8G|ABVb0$5b2d5jeHmpNJy^%JI$d^J~Sd``e$V!a508GnpEG$T3SM8)@B3J7}fCS^JGfA<15T0M}av+!Jta zmUsvPW?BM#Hzf9m95UHloJt@Y9}IqYVK(aPRE!O+X*BDG;w$D$=e5>6%!pic#-dV1 zT{#;X1!qQvfwQ?Aws)?p;NtDnC5L{3QuJ~65tok>ZW5ke!E^cGK1}&V)%yuoo6*?^ zXs>w(@gr|7z7ztdVa#Zc z)l+QnWp%HY*&vHR2cmDFVV4E$CZ)a%rCZV4($!XCX>xs=wVDUa^2!vc#q9i(BQmV zuRW_Ed!qZ;WfSqx4bcNLnVP(6Du-W;DVG#hiM}z;#sDERm7crMRECpwh17*da?I|4 z+dM2-PRSE=8)0LZ*^JB9@K$ql4-zPr=N7pek_Xci-y7>6c(~S|9Wm3^5bQEgqk%=^ z82a>%O~l`e$h8=Vx%XYcU|79CA48#*x?-VtGR1AAOCy+Q*(Mjc! z4%XS3zOgO${RDN{{ys@5-7Mky%9~ssJV&WB6mO-h>0R>82Y4>JlmCVvze!!R`7sj?yVI0)?uE^4Qr|>7#SngoQn7s5U&8VuUgR?4 zIHhb-X=6&B{6?Nj#=96yi!}uoySessNhE~i!>8M3BM5TiQ$SFU9q!yQ>9}YRncJ@4 z!&5JAPMB+jE$0~>F^#+@f4caFE4dyBAyEyRBB^VQVw=PkDQh*TVqf6bMqQxG2kB4i zJ>Ec5VyZ;5G92Ge8;|vn^Vl<$@e-pz!Yrl%3(dQ+ewt3_F5cIEF`sa1C8KOvhl=6c z0XT2@0zEu~Z|7e6k=^QWcni$pnl_-ucunX@+BWoc{!P0LbL4vwRibY$c3(bN@vMPG zV%F<>c;Dkvn$0cl&)gx2>XLD67xWhMj_=z2HF;YlehfQogh_j4=?+4y*>Bp(pEe99 zGDVMqkq2n6_ylWjfs`k2Vy7QO z3=s`H#NQ}kxDic-QZ5j{gjjmDvG=&c)}48Cl?f-)xI_ zd#@=iWb!&O>9PI&iMU1KfYOw4s-Yjo?bxWk+TOy|y#o#cY;2rwua0<=_4^p>DEQrV z>vp?Cw!(k zf$%>CAK|otr0#dh{qf-hneTj>ex6G|Q$aV3@{;I$UW7m)t>8NU6FG=f3MN6z-c87e zu7`4=i>n7<$m+y<-t!W-9oaezFF>FR@^R-L+9_W3C=tB559;Awo$wh0;xLt0unJ-ayna?eZ6 zq3v@VU6lK$m&7--82Wm z_aFK7+dGojM~x$5qwl_Z2!8YifDtYIo&1V+msFUO^lS|)YYfXgS;=fXG+%6Xs1=2 z9r~1sidtHo4Hm$nQ7P6(gkX43V||ZBd=aJ2P)rBPZ0wYNG%JHN8uIUTydztRjW{}P zaEen9u}swhXR8gc*RDLH+4F-t3DP{y z|Cz?p%7p%NBj=y%BoSQG=4RMRdS2Kb3~2V{}J5SLDs6F!C@y$9Gs$=bQ6kDhb?*$K)zhV}cX zD-P`wlwVr4|0n7#-DTkCbWc!XEDt{DiTg%XO^*MePMP5&K6hnY1muB{Ecu2J`GlkFxYas6edZQc4iH;)4xg7nS9{a2fiMn9?{gkqAKlzNyZ~1$l zx?&;@E#eV0i6*`l_X#&h-RmAk&WW3D?amsrRBQQs5ilCrV#e`2*JB={f6?vmfwuV1 z)xoW$5QvIItx^P*$wycqg0 zD=Es%Ppp!3Z?uQh@x5KEF-c-THgs(M>E2Uc>M_4BqkM9;=66%CV{v|+dc7wPQJkxt+fo2nMlIaus`62&`E`Y>+x*%VPSA7%Sto7Eo@brJ_UR8G0|H+-Ty#*Ei2 z5J;wQVYdx<4z_QUoebLCjknM>W7H+r9Nbh}8#Ah8=;A358vVVb2HBv>vGy7G5ef;s8Kjcv&0j{xRfC3016gA; zO1qNSlwbxsWu(^ZrtQ3`{8%mIca7JE-8x!u~GP?V9nqd@DA6)2yI$Zg*o$%kF z#0{X&gB82k1&O25w8HIvtwJ)pyWGMJB|(AkKJbm}z@(BssRz-Q0%&3JhTJ)Igr?h> z)+?pgE-lP++Ml2Jhud{&{WKZKSeNA)DJP^p`HsApf zJpd2P)oZS_WTzFl=tm@e{EVc=H@QDHnL!4q#Rx0&0Pn=dm}UZ`@gN290g>c_Ec$W? z5vD-NaV`1U;%k|wiw#X*slY^^iTVd~GCFqOx%*`vr<}O=`_y#?`-JYO8JVPvD(gmej|11+i#;(KYvFl9b^BR=i`41Wv!#UpZeqZJ-`2iAw9g3uNTc= zcjsVNSh#kbmoPw?e^5I0GriE)#-uA;y450CN$^14aN_1~KSWu} ziXWvu4a{D1&da+g70Z?|{KM31UF=V&%jWv!cX@vclwVx6zmvM?z;9B@?pAdFT#ZZE zLpLW+gbie9BR4lG=a;mb8x6`@V>e^=m%GpFP8js-8>@Twl3Qx;Uhd4}@R=miu^s)+ z^!Ya3Iz|2ZYQ8^8y|y`jgt~mfW!~b4E@RZx=ZG=ih5@q6t%K3#>|Ckw4`yV33V~Lp zLzTjXrAbP|+7bXNUhT}-@KKE8LcJO!*#_gO_vyx@d15KkvzLS@}kypG9^h&NxQHaRD75+h}RbJ z*@cssVsipo%S?RLm?`yU@5YyV3_#-R9n>Xrzn48mKS_ z|E&KJ^_uQ}g1TZ(oyJwxnPkgSD9pkm-A-s>>?62V%LHD5Ec4z-@ft<1f3TzoR94-WRxd4^@l27GY>gVb=$Kk5PtZKo7}d1m2GO`tZuE`nrBtCHhvc4C z$QIduY#_a!jBgIlHZbNDEP^=i!K_l0i(YZQyEt+4lniRCw7Y&7u~WvC!sR-kXTmPA zGi2S`**&v#PLj3*ZMEXfg7G;vgz;re*pSi~lO3^)ru+LM=fdWMl~9VS*nRO$fNqwr zdaW`&q`kjsXY>u>z&LKTZuU}2-Q{*&sirYhy?_RhyAURh6m8`K;5MNpE*rc;E!7=b z$Q8P1McXYfP$mLB2XlGi$qIli`$D*w1JU_-5rFg<=O8Gn9N~xHjU!jyv{>0a`ZQ@r@zk=t}l#q+1nBTd@;$85Wq3DO$01Npdr z6H$(5*UuhwdpFmE77ME_M%%XfzlnPrFuSg+zWY)_NJt8f!iS-u+&Br5Z0X7$No*8n zs?kV}lvvV4Gm=egGxuudjx^C|W-@n1)`ZX+3awkh8$MDnG`zSiP*Vc+Q_>P3v?(Rv zHYs%>1-GTtr4$SVYABSveM#x>zt&#o>~rq9cScS+ndg!AJ?HGb_Sf2Luf4uDhYZGb z?>ANV%hNn7j@Elf+oUlM@8?eT*|$#Amu0O>H4FqP;yZ79=Uh#+>1JKbYR6BY6exk|l|HhO#fVgOuG5|>tyL0PI{eqY z|8@JMZ|40tdC-UXE`0dBhkf5K#!r;2G|>s3dU*>8fFm0Oac4ScCN{273K5M-d`*v= zMlOe&&0Em`u?5Mk!OLRRcpg6rXTWsG-s9SuAY8f3b?tyE`urtn|`u2M+Vm3)I(<+#$tH#T-O59_O?wM-MmcRNx=%Ovs16_7qH329EIu+!xX^4XO1ej6e^Mke+yr|ZL+ zqYkm8Wr5@5S6nRaIy24hRi0nK^DNlI?Iz2~?6~zX?_bD!jhzm|oN(lXUy!c;0w4K% zlzfuiorufz#E@xy`hmDu5^n8@eFOO=6F9}9DJXB5OC<+Om)8&@#`0Dz#CfNj@f~8r ze6oV0EQm&~%eeVl+*YkuweKzJOmu^Pue_+EQO_`)|XFOt{#Gj1@Bl!y-sjVxzA!ZFAeHd5F#jGI#pn} zW-2(gk)#Vt$}f@2ZmAdRw4R_{(vf`m|Kn>d?!63t0-`|w8y|dD-*0YqqmGZ@WhNrL2D7?S<-7Z5)8mI)0U4whbW#6fApVTJi(L8^q$^Rl$-e9|Ua8A*~w1hC;!|53+ukTOu zUE?w3=)~+}H*MWEoqd#vWy8gz-d?rK)zE=$3rkpiX~AhGZU4xHplSG8H&b46l5^rg zW3S+Ojra1~DdshL3P`Q-hxz`+e5W5n+Z?Z3kMTX`6(dDXin?^X(6*#=4u#cr14Jkqs$s$R3t7V8(S);?W0ryR$Xm5tb z&z69Bn7Q$uiabMp;U(kYI-e9p8RqaLtqKG4iMO$IelKo{yrbpwT@^S?+dEBE4a7W~N-N zr+_E>QtHp=H?2c)MHaZqkRJxAM>je5N8V0r?{_5p$g#2*$^uO~7s=OFJq$+L@vd>) z66uV22cC`FaJ_bSz|(x!{*%>Lv?`nl-P=3XQUd&*xSybCXHhQPL7K|lF;vcut|ba) zJ9|Y7NgMUIMtRW>?j3;fWCazqdOMg2GssI=o93$1dYp2S3pDjJj0pw*8S?22S(|6g ztC=a}a$M!V?r%9CQ_GJTv$hb*^oog8_SRwYzk<{kr|qt8@{EHQb*v{0TwNbfUf~&` z(JTiH13xLMv4Te{$sOkQ%=u@i(YPViI2{=| zXEBqR#$N1 zvNgzc%V|H3H`Z8X)7i9Wmp`U{dyNwlh4Nq$%Y{i9FWs3w8Q2XbbC%@}?hIK3m(fEi z2>%D)nect#ind6m)f&%6$7&btGJ|KdVFYUslZyU|ATAQTCIc7RU>D-(T;wCh!6-y6 zT^V|tV$PuQMbyY^a2Z0+>s{zfCQT?h3?sdW7wt43M_at)aJ=JU8>ml4meY|xhOfOw z-|2;m4!fNAZB*T*J{VfX+TUC=yQi?pL6$73B%+}QQ8sue?qrR108*|Pvqcp_1G84_ zRfPzZ5SrEN>|un~-zRbR0fB%%OSN0e1s(k^r)P1-dK=I3Yy2isohRb`5Am!s+9yem zksf)(?f<`-RO@@n8J%8}F+<}NX+n~dm!tY?3pP`m_x2 z8P3NUqnolZ`;R=I;(6cq_*v{Nq{59KAl2D2#`Z^fR?L`jxM2fkZsIojL97}FSzYbE znd538OqzMUim?a5joi(62o1x97ys?59O5v~;$`Z%(C58yezKrR8P+`~!W1*6mS?bP zBO&@~`;b>U|UoJc}Nj@w@lbf>;&&Fw{yE!6VM( zQ*xf&R|`vp5+b_-xEQQre+qJ;<9)GL1-58N?YD%*1b!#z42(}U_am0JST`L9iaT9Y zMwY0f7PxoP2JS=jTj!a;!O#1DonGETDjDB5lD;VW{%)SzJlAKjWDsgM=go>YIk8~U zx0us}MbjJ``x^sa)s}&Vq2!Z8cI=%=t=yUTK9@^rjM5nEP?%0Z(O+auVk%a&b?fXQ zVS@A7UCQ4^yD85O?@D8A;}Fp@aSN~>F3L~rf!Rxt8+jPzL<7B?L^pAuMhUEIJ3Qj8 zZL-W74M`m^6*e8lN3w`24-GatPm`Vku4t+H)aRuf zAvTMJ*t23pGRcO!d$hWg(+K3Za5jva2N7{u@`ep@+6{qd8s0~Mb2zoP>|{b$y6Mt2 za;FyifbtCcy}?P@X8}10aC9zLzoXS@_KItpyaBf6SVv^$Z|~o6c_DHOA1*VfiE#ZH zx$rgD>5^Z*t*XbJqL>{4PJ@j>g5BW$t>kNyuZ-5D)#Tx;w3YN&M0{?2fP8kI$)-4+ znS?~ePF(bp{F1Lt4(Er@ykt9<@?Q6MonL9rCl>)MJW!NK2c^`l2sH6p-o$^SyyPuD zo@vrzV2iG#5vIUZ@+&@DbA82$Q~ae%64K$h05u4gJn!jaz?<5(ezQcjf&2vdU7nC( zk$}5>i0VuSHjg<_^4H)JhrI>vFN1i7ZlkmJ@3~LdP=EX$t-|WSMocqh02v3$=^T4P zdW5iUD4W!IobQUo3pKOzlExPk49+AwiN3)4ro8qem2;Fco}Dwb#71bm*~fz%*3Al% z8;W%}$VuSUb>Hv&x8Q~Vg>4}M$ZzmE&AykoNd8x(b|f9OPew?$ijzH=_!rKaM zc9n>0yO!qDkuebA(4lGbPRV0iOiWBc+r8M*LMosOSvT*Pn1FdH(2lmb&8a{NW`dU(_H~c{LOcSxVdc2nmq=>!6 zzOh9t25u#82NasJqegTe=(IivJn1xIFO7PBllQWR+(A8^SN>rAT*dKks8v2Pn&IQ* z*LrFkIx<}4yX3vWi>HB&?iGL@A)k2mQIlKS)hCXuUcFOue0u#jRMK^8wtc)2OAhu@ zv%hs`w@{qh=3q3KTa#i#_^iM0yzUvUJV*gZq~m4oOM#}{7i%02Q65$>U5~7^9s+5I zeg|;w^nQvbV5#zv#ZYENp0JF5hkUY^xyvhI^N$?Nw6gF`e~*#xOG&lP^tw2<6?+{- zi>Mn=E~`)B0r0`}Ek;;d5X|0ryL8D~iQWXb;?4%u%iQ z+&a$pms0-d(tvQm0#eO!k?+Dam6+vUl0Vh&Gw!diD@4xfrOmZt`l)b48m>@*+qjx) z*g9V-j@jM`bFlyw2GJO$LBb+JHmeF7HYBbjb1J79b zU9(_LRA9n)mDdbw7W4yo(B-x4Tv3S)s+tPjfH=S;zfWY3;Arz=uO!$EOB|NHh20dJmHkR(`mDy-I!;FETY~_icVKyxef-v5< zAndYBR&AHF<8k?_xTSBe{0in%#rp`B6{|!Q9bH;DYhtEDhonuxPIm93BOyIBFY} zQPi(!dfBvLkU(p-+VAsoZDadjJXQv95Tjz}l`!{R1$>Zm0q1rvt#dOQwt%!X$}woTUP)*gC0BtGj6TlQ-@Q0)~kOsD;&mbG< z-7sL0FT=_*V`Ufzy3~P%{I*q80*X`srBt}u{@TWzhf6y zdXPd|8XxkSvVtZ0q>OE4grr%M#Ie#O>7oDZM~ibvTF+5{^}HS4Mk5INc=JE3<88pH zRGb>nU${zsoePH>TBjrMn|NUtD^Wzm-;`^zY)ARd^ArT+G3uKiRo}>URRWHEqB6#mDGjEwn+K0&_rxO_g3(@j6yeU~REH8gpl>Ak{c&*H2GO zyL1E+$L=aL!V8ax@Xipv^dI>-6H+(l?{!RK432Zw?XORW^Rf5rbK;Q*UM+o2pRj!x zIYA?lt|IeV-gI$5YZ`d+nLcZE6v8UioJ3rxCGBeL~eK%hP-p-&y${qO!b!KbGRjW2c2@ENVR;jJ>?q-d`y%6G$`WqCu%K zhsh^=I@!N`zQ1mIHlgYU!;}m+IDa4-yKLVF7njz=r)hN4n=qp!45q)aJ9InkBZv*N z_=Q%Tabbz!m#M19l@~zvkIP~DZNCGUi)hV!fiahkPX}`I{Z=_5oX%l~0Q>0boXo5$ zJ7FaImeNo#wOtdFxWrByik@5(Q}`@JAtxFP`#|T6ygCs)vV@t=Bogxre~v0HkS4jm z!VbnJs1~wEco3d0c84c@=(-HdWjc+ZLRm@!_tY4?Hjzi!pS}+@LgE@bAZX-3)YLqN zBOP7Lx!8+!h_W?#=G2K(Z#*;$tnL~ouKvb>az?un_7+Sth|^QBKNx(|6x%K72*k9w z)D|z!PdBRLRh2J~eC#u{?Y{1m9V?^X4|F6fwSx)G?lO%9?i7mVc@_)eU#dt)93K>0 z;bBaxE9@k)qfvvcm3iYm+?vH3ZM`t|gC>{dJFke4V|KteIo-ageJUKpELKPNB!M!P z7Y?L}V33gi z4p(uK8e|Y?oI@}reN?YC?DA!q+ZF>*ZHr$ARy~zjr)1Dn^n}R@l3~3BrHXIH<3dKE zYi;OSoUy)x=eO|u8>G4$>1FSC|C@DE+2=*Rzs9rZZan{Oo~4uh@1)1G_qYG!s*n97 z&*%95U8JJlA12kA?#up(%VPpwoYkgyFCFjQq^iG5s&+k+(kDq}2mJ3|{F2t^kp54e z)s8p)xa*J3lFGm6TS?Wg|3WHT@Hpckr(lEBU<9Ta&2Z~j_Bb~jf)>Gb7dCIjJ#q!T z)7&S|AKx1tgF0Pkf!{0Ag&bo;B5P?3IElg|^D^kU%el?BbqIcYZ&|*5XZzOfK3cKH z(%$qNa%db_;{t&rEZ39#o4y5M~~ev-w`@>Oap>Yu+?o6kb|c#BLM$Ygc<+wJ1Pk zaUYy0d~2ofpqX;yLp$*Xjcs*>*=q0N-|PJ)xJ4lXv2{C48oJYIGEXB7minoOA?w_w z{#IU=*|Ca_9lJ5nE{G7Lu?jo5{RahA=)Rr_Yq=O{4mD zDM%H&(hzw5lIR89DsSQ#x zCX+m&v-*i@%;hUQOXm1JR3lTM4~NM+;mourcM|2(Pu zPM-HuZqpyMX^Lm@$ZMpM8NZKI=ks4CJwkf@2c0I~MJnCeJ4q$e_{XG@4Ln0C-O-o) zw9~c<4TDSBl4S&f_AR&JmY|?Ym-OU1-dI^B$5zb=<-;+`7_yEX;gXLeGy&>`_(J?Y zX6W2&8@I-IZczv)OJd-}Xg37sjh0~_DJv*gTHBt~1Y>`IQ3faMv@y6C=pYZXA#yC1 z9BF)N2M>hYAm&}a?}SiWzWeNoUwIA$t3-aM0VjhmEs?iGt@{4nPGR@zh$u!Pp<(M! znLo{c;N2bn)OBU?d>_we`2HiL+RHxcpS`5@JkmNIeh%-2H-TSoaox5X#b7K=U+V5DZYvq0Tg{&n zcg?0uP2w1EW4YUH>+NdnZ7KYRa}N!1XR30u(Dc4E*VCG5Rhb=LOy1`E>i~M2yen^P zpMjC%ZlNI8gB#oTh%4lk6OsMpr}F3N#nvl74Z$r-8l(yVC9yxq!nrbdt}k&3_XkhE=h1Fa56~nxe+E-v^Zt64ziIB3?iaH z0kF@~PDeZPrejf}2dOb2mk|()S6M={PU3#ZXKFOXyonn0o|!d)L*CD<+gSrjOA`9q zTz~Jp#khx=2tR&KF`z6}y1~4@5LAIZR^4>FTr+)xOeG=*BVACe$}xOi{?n-oM!X}n139t=cL4L7PRx2M|0#%%W6#O*u<$#&+ zTVH~BJKaQC>AFM1i1p4**&_8LauI=imc@k#J9E%fE$R3TyQ4r}#?_@(fPO{K7YbaV z0%tEPaGS&to-KM304k!0DP8SJrB{}E-9(5F9TL&z+$F1S(S)v;+qqR(vO70#yLDpk zzV;j5(0&a<25lSKAek+-b8VBE_B!hfwYcgU3q9=&s&%j+NNQ`wi-o@m9@(6Mr>k6P zGgEq?eQUwysUI-o-PnF~d3n;ovHftMoldf#;3&|MPL4#Rrd?i!Xk{ zapMxHY-%4QeXYi{#@{4rClir7XGPDaEb!5tCngAu7rQ-XK#tsVIep7%QYN%5#HL2% zPc98S>a{$HFyEpHt%ZN-^O{zvIoX!tXM{?*{cDt0{VMO9zj6FwGz*DH{^JVHH=3E~ zJPw@0z&RTCt2&p2R|E_QdcIHaUG_)i_hJxD3Jsg8m!T_wn|-A* zjkpknyprhGGbCYJN~ubxiMKRN?T%v%5XoKGi)(7 zmH`53MpJO;&ZFuCwXli3h%sdh*5;bdY-_-mJalChJTk1Cd9b(U@_bB-(kOKOpoY(c z;GtD9VIrZ`yT;)MX-RCpo#ndd_5{i|k8a1fhXhaRD)CA;0_jE$>`0eT@o?p#VgbmY zwX3bWEBIzXg()fi*`5DDTl2m7g}>lB?x5qh@T@&?CMn8tPPsJp!Tik+lBqFcdtj}O zF1#1`dHo;ZS$pysYcr@Hqs5tsp;CW@y)f@%>+s@H3GiP0Z>s0>gFI`$a@ldElEh7K zR|O?A_#42J4P=blxAUxXpsRRl7YrCGN!LL}*1PI?7I@lcPD5N0|CqqOny8dpSjC&L&7Bd* zclZ}wW~%yqOY`ih1!ny|whgM3zct_}zSK0}H&~bsWj~r2REXwt>lr^lKKX|>*2mcC zvf42{?mSI->5FEG-IqGXnH3gn04?NNiSeb8(fm@xK?tjqu!<7F+=&5Q;BqmxeX#Q=}Dy)2>sJ-6Cur2b!`vX_9&X173g0#^Xsm#tn&ChdH`@G2DywW%W zy}gt-zIE7eumA#0(c-dOPA`&Q_FhMMvK!kmA|7Bopi$gJRzi$X1+^l)(YpC$u=ehq zI@xJGLOJbe6K}fC;wcT451z`KEE?p?5Y~wkTfcMveQhCHdTihS0K5(`rI&c&FFQ>c zf=QdgeM*hkPri26hWj?}czyeh2TpqpcHQ6{V>M^L?)7K?e_?gwp8R=f6+wiqC-l5? zm#@zIqlz!DZuOQow!Rt`%x+=UU^;5L{F4{f{=+Md<0qwe9 z@pINmYuXvLY*rny|4uSWwfCIc{8R0{S<2NjTh0@wXD90)fO5BwO8tu!IeL0_w#2{7 z!=sjCAcMf)GxS5eiq_w7fi&di`E{wMo#$~vzEi8c0o5?E)>{o*|RlLvp`R?V1PR1#oqbr{V|O>C?ne`7rcS23ete< ze)C`Z_s$o+^gqOzEM?6>G;UiB`O;cl2A0mbBYU>Z>d&hd$Pc8poiu!#(y01^%@!bQ zKt1y*kN{^Wvz42)YjGw=j5TM4;a zt;Z>+{jRBwY@yXVo@UWtyNPvyQwb8+dtX>OzeFhNtzybKDxS1)JXU@zN38jad+v^qC*~o0Ph%zNh#xmNJ+9p z-}Lvh|JiL%{ES+HOUJI(bx%7FD9N^iCd~N)v?e{_uPGy4Gr8wXS+pi3TU)D}6&ZJA zI1XH$vr>6ZW`$hJt0`n->Xcjf()bXS7oB(*IJ%=J!4YpO%~3WA^_Hl)Wl+Fq&y&D8 z3>+T^+4wn#>;H?(>yf~~eaBnkKJxza$&WS30{nV^ZXTBJ!s`0g+$|-qi_UUobD*%Q za~JshU~j9)Ui=^$7@EZ5u>f=1I52N5@{5SYL!@O}ZXE}t$X@)Ash3(a8B5DK?D)Q8 zCOZn0VDt^A8?B+SEpg;&>fP97KNe>6ZWLx^wG~Z`1wR&WERGC7F&SeC%vh+=+)=AE zop*>zOHgLxo#eP=thTdL>5Fa11y!+^#c5wXgV{#vq2@w>Kq?4GEsrxWMUX+(~(1Z@Qtl0>|qv;*v}b`9-D(o*iUhSr#9tC zHh~@<&s5{|pfd6vM=*-IQ!-LraK_6Gn;27{csL_oo3;zq5Y%AZ)Da zvgwY^K^nRo&J9yOFmB?|U$_C2D>w-Ui9%i0^$-#bzs9uFo@4+liyB+0j_N($56t=v zlcv|dK~@6g7}>12DUFQ{mS7b`fn;E0WjHlF6lAvQ%vO%`c{Q(nic$N(Z&&ZE{ck+W z2K|QLaeYzfpbqjZeZkvEZy=5L@8Vf}cRc?qo{#eU`M>LaHSzwXJWuid9O)6#M@VJY z6yG1?S$x93Bh@;cG~st;&=@O%XF-|7q%KwOiR1X zIs)@t+oHIPfhG#3z(70^tE;3kzavp-7!|8{V|ZwYvje=D##9x2o3_PNLmvZFMW1Y> zz?>uHIEDdl=aG+B;|_h0=X`Ge7tgXG`l{cn#w;B*=jX_0b4@Co_*K#uk&c@4-{QMu zT%56(Y00tj`G4+I%ok1~45CV+auwoHS>`@TX?0hp5*JC%o^}K*mns%HUui)o@h_GK zZIZMjgEg91tw?B@6Q05x2&_`}wSGpv-X!(Icd|6N49f+s=o6SuXv)J}JG*$i;^agua-$-#hHK_KVhX#B+F$r5;~X0$t{wF)da$CAcra5FuVN?cEr9xHi$kT%~Y&9SlTu`qGx4v zsXtv~r#TZy#Bz2Amfu65Vx{q^p+&OtQ{Dw)JgqNTAZ%95EY>URN5!k=t@b^??{;v3 z<3G%^*39pa%APaczx=pOUCr-V#g>1**YIX=s2>9TgPd#vr~Miz2v#+)mbq?tas zDH~Cj0GEIm0&t^MBHv;qWTHxeuPms0#3KaM=1MR)RZ0*H6Ro+SMu>O76>#3d5(<@e z!%A=~kBpy6TS3l1)wu)kf_au+B=BS3ANqbB&kH>3`wx)HJ~`h149}v?&;K7)o0FS( zR{mvD;qMQV=J;9PuaUdy0uia|WkJe#Gkb~npH!}ZYZEcTbFPeDR69CFcn-Av|=x4f2Es5Vx?8hlq@6fVnRgWl0nldzmpq7tut7g zj9{hHd}avlG12lFwFWVB#!9zUsaII5B*-pIFRP5Dj%#lR3B$E7i`Zc}Sb(R;|H$$A zU8JI`zd)MP%|A--U-!rEI~D8TIM1@#`bN^6M|n5T;)g#`2mYs*TOxfW z&jIgScs|VYc6{#H6&E8EXyJ6ZLXLNUu)dXtlUKKbo4U(R6Ca2N&Cz3JlI^~`VamN@ zoH3hat0cpPRAJy#!;xwfLJ6tUX$9Aq=K zjePo|tymU9kvCW3JVn@PKrOAK7PuJMu9g(rD~ir(ma&g4!wPd_*QP>UQITl4-C0_6N3Py^ z-Nez^cbB5!E^j#_ng%B=8xUVE@k@(|bZU4Afb&7?)%7g>h@v>{#mn zlAddUpk^kRVDi-11@!g=Lz+i;p`m3OlGE(k5~1Pk?8Sf(9aGf;W4;$hkF1VjXkwPg z7&tg1$w(7-Q;0o`%a4J`B_GzW)04()Ta?Uk>M7N*^J$Gc2j}eF67(cow{y{(sMZ zne^4!_xJFudVVE+|I$CLo~iHQ`7qzNI~ymVQ!(aRK^`-|GVeRsDuQzj6sfb}qxoDv zm<5}z7JLfQi>bOWts?%C1j{pU@}gcy;PA0A<OjgiTl~W3`e39?hH-0zioo~CD=qh!q^)Thsz6QAI zKnns?#f8?Q4^htKi$m>UFW>~jMsHPof_yKdgwKnPtyeQs>GcbQ3x0?D;Lw#JjdcV8 zT+K4NYU!rW+GF@N8d!D$VuKSq$dy>Rm@ki7>VYyNe5(+y z`ekIj<%gjFhMJcrY0o!}ZO>?%@amvt#_z!E{<&@Yd4*8f#B2Y@dh zm5MUGFyYTyMjriL|Ji#i7L4>!Bka_(LMGGL&Q?9k&v^#;vg>}3RQpQJ4n4~|-WL6F z%9}q!X$RcYE0N8L0pYWhlN_l~72C3`nFQ88Caa_{9?UT<~PblVlh1*bA+aaera)jx4^l}||XM~ASwuHdke z&@+?;?w8OFE;#c=AV|Tf_faPQf09|Fx_JbovF3|Kr+P+0hCrVqF;~A@;hU zAH!7^pN0)E9;Gd!ollXznbh&{*j4O%BqErVRj(mLWz%r%2-;SwuyyiSFKw4` za^pD2*#PNSS~Bu#nDGU3ob{5ClJ(@fS?PFXr~d5E-(%<43aM)>#$fPw2l;Ox9nBwC z>k6KI%q<0#0vCaQGw>fFl|Mk0KdxjQ&mdD)e@_BO=T)`0v0F%EjfiQo`MdrLyni^G zG*UW$ov2R9ku=Os6FN-Pz>X$*V?mFY_=(iPS|!G7H8jxhxRy5!hTX&*(L+bj zdfy6Av4I5LA5~>_cNmo`CLl=qj#@ZvlQ~FhZKB}n%oW4h=gd~|!EJquN4a+t58SXY z*WX+!o()LNTcr4yac9AZ#J3%=XZ0c_efsv7?6DZ71wU2KI*viB=Pkjuo(1j+)`9ax zGgU4*w~eoTI@-T-?CgogQYVf!z8>#aR18v;?P>k!9zQ=<=v9?9tM|^<^)r+cpGC8S zg{$Yw`1j;2ME>?mypXh=+h-Fw-!Yb~j8+k4{nptNzAzBHm**v{A zO+yCi37N}P)Hqi@yK#v;@kof7H%WAujdZc<#KzJZkZ|gsLxj9Y3^*=(zk);%Q*_2EUDUC9(h@E7S+$jmQ`2)|DJOI{-$IAst}Av3!0fenSnO*{)=C@ zr}cKyk+r)Cm1Np*9r!g_kBIUwlDIdDVWj+SrQ^0#8 z{W{~E!BGQ-GD35fGd7hEJV<8WROU_091Fkc6QxFcIcHdK;%Eb>vQX_^ZS@li_ly19 zqjj9RSs#(iN*uXA`Cm?dEA*ndAi3E8zhsZakr4hipmVuSM)X+YG*K^{(0hF0G?GJw zX$Y%ed|4mrp`x+c#utv+DA6+Z|Aa z%3A~0sQ*Fmb=>e*>JL3YP9CqN_Gnllkk3-TBp74s-@&0dz`EX|GId&xt+g-P)B0-C z22xQiS~=Aq+o7D~Bcc<{a{OBH9UN4uCAd5JFYK{+DwCu-lUL6w)!f@1R^AB=#X)MM zQ&mvp0ZRRf6iEaRWshkfD8{M>q!RP*?kNwv?0-uc5ke=g4-B^4j~C!~_!#P>VD z+`mteYF^70*siR3hynBY@Mu5T5KxG}UrFUvU})TnGRbsu%QVJG@tY~q-L@nu)G}(l z;4iv7W+-M*;U<(}hF^G|M}D+$M8c{4ZbYMSM6E6`C5L^4R58xf=7b^c7_KG}7i_^U zNt7GEIgzAsAnrdRsN^sn;f^r2<+cr00%S9SQ(9dgqz>5weu7l?vP1n~B(olv6%F9i zUDYVnH)vdz!MYf=+Kg0d-1`-KEdJ06>6cPpLf;b$8-#^fMx(Lee&};@yZ7_UT&{S4 z3A`#tA5TpsgSgdhF|5e`*YQ4=y|=`sgfp`Y#gl!)g+zdLc5487~U9)blJL6;0mt1TjHV!@TuYV>6Q7`m3@XSg^xHk)?4>qw;OL`xXUA-@1dY#-or*jw7a=-3J zvp|j*ODk)%Hqiwz-lGa>5e-(|EKrE=*=asGFt5jyeu2I-Z&x^>;mU*kh}%9Q;#pc- zlI?$LlnG^5@#d0?pBd{{ng}KNnwPu2_8*dp2E6zN=cC?ADtoLsZrULhB`d;?lB|Ki zeMjbj=?ChweCO;0;wM`&p50fOqff=V7$dv+P5cvCBiVAZ=?rIN=5U@q;W|?YSF)_G zAJNdvGi<;KhN@6F4P_R?cJdXjYZ?!d70`HLZUcevCMRwTeE{%N99vhu54A!~u5g5f zhK+N48R=thqVs-L`V3i|H#? zYcE7T!-G;kV7~ZOzK@G<969Ql{_Z&WwO?2GHZM4`JlR`UDJMIOG=|M+S)SXPJKQ)n zd6*fnyu{}1pw)-36q6?JYEx(zQmyo|c!tujXbb!fH|jz_H5&f{#4zf`mtt)N)YAOK zjtpt00+FMb79L~#&{ys;oBy9Co#lC`jU_ZSa+^ii*o1wreDw&}mHv++83D7%oLWxX zf%|6K>DA?Bd%3?o>6RJih!ub5k>0ZG5GVHSZ)4l3SA&Tue2-yKB!<=HFlnVqpydzl0KjLjC0P* z7OQsLUA{}tcZ&C#_sI87o@FPOdM=j+yM&RJQx}nY+k1__uo%*Qt^tKOgi0K{FHWnv zicuwkXVQV9=Usvc!2Mf&Dw@B2=hB#ANk6*^^JD|a!3<-LC8C))xc&fYRlLEbf6#Vb z4boD0p~%r94k&n6EM2&`aY$FIoGI?-IAf%UPJ6h!qLDEWj6gPn47{e#E*#MP1f6ut zm4Ltx==up9I$$*s+{3}~a#3-^>=GaFL2VYdNN$htKqfIs>zyZ=ANilY;-)>VFU#iV zm*4KOzi(Qv&gTO>-$TCllj@xHZ%K8}=c@-*`~SOnmfhYPfUErPA#Ia>FYjfq`G=&s zgYU?O-`ny%q@pK*A3x9Yp6vPkl$YM>lcZ{|mVwzq8)oA9fY?AC?Z97hLEc{7Zx zsIQ+>)$crfX}q% zPjZC9T3nuU**8|i>dFPV+tfZ7wG{Q2zalrG;}3RXaew{x6A<2E@9I&u7 z&$@3sU0l_ZNEv-t*hvgqx60C|5RE=1vqYDBT%M2D+6s(7s7m zWVd%j*YK$8V){tbg|1Pvd_7!u(B&wB2Ok38Kbv{q$9viJA4}iAhE#r?d%xcOoG*|n zmj8Q6r3dH#@5|3U_X|O%=*__(!`!p2T8b~^Fw~R(~>T`DK9UjZzpOT8F{m?B= zv%ltRt3JJT8u!9m_q6UMe~!*vVTY=NC7~`Jip17PtoQ$|N>i z+}t2=oQY9e$8OtWc%&+?z>9fwT}=omd#GVP?8;=+Kq^{GmhQ z;WzJ?00)-lx8@d2lDfjLBCK!vvVzIh9AT0z#9UZ3l}fPq;<+_I6_Lx%bbwVLcEC+a z(YcBaknXfLU%RJug>>glNXn!TTZyquuS!+pm==UCDoLI`LH$)dV6|)tHB;D0Tzy^L zPNJ5dAscl7k3p!G@T2l$z&*9iI1HV>#{s;(VkdFLXB?~tJ&bthU>mCHYJ*ajH9Oq< z2OO=J%K5puoaKLn{E{bSNA>31B1D;I&l8jro{#JjC)qP@^D*2P!ex&_`}njC-Un8| zIm?nn%)c8by0^?Uz^vcpiey=zdF$of7PDW)^_a}iI}xE7g8Z~X28{X zXXpKkc^JF!hbt_JLVUB8|19-a=}vqO6ga<((PcsbpBm$M8!-TlMSsC2ZtYOW$ph`{ zaCbl;YDF|`PXJfv$fq9jBOopMBxwvdHA zXE76W>qRtq9nBNeBa95Szm8lxwY+KVe2n&0*G(;-U~abo)rtu8-Z#|otCp$43n)(4 zngY3_;aiUdS+2BNQQ#BTp~x?hcIzSP(~228HdWrk$2MxyzVC0w*BcX=W+rX>t!JrU zr1p&ODQA3Qa{Nq;cVmXhwKW-55cjkZi);N?e;=P1iO03v)s69K%IW;3?YbO7qeQ(? zXr=nD|4Xi)iSE}bso-%#=c$T#(duC-sNQBI%9&I_cCsAHx5LOeT|3(agqTn_}5q9qA#01E-RalnD#% z)ZJ?RC;A~dDHz~Z8j%MZCXbU>G4^7n+&0b?E6Jovu#WDr7_q8~+szOp*;V7MBd^C;!y4<^Z?)s|b8wO22t?zf&IpX{unUPj5pH5Mz1_pM_-KJlHy2zPjw7fiPK zF1bZfkK(an+;N!q*YTcqYdFGgC!dC4Yq!$$B}6eBn+RpolvtDQ1+LL$*)YkprEx?g ztFe2Iq`Kk8clJTbsn4lB9zI4BLQY9{nS521<|L{-zqx=^Rpp+cyyT%J(jCWTaN>+E zSjyCh)5wqU?GUc5bCQE40)D26!Z^nCW~m;|aTk}6f`=eD3BG(}bna7ek5D+khDhjx z0DFVWXZUZhNgy|Hi9AS#k~Tup#U`WGGhFaw7OI?m(Lo;V4@_TaQ9zBTbl*==j5mJsWbseARQlPGm^w(d_F!>T1(IHy8L8SL(IE7?>+dBS6x8;epeGkvtjy^rp z;jv(Sz6cbyfUZkX$0{cC3u$+*n=nY?-Yw_8w=UP@3g2m{e#J(X=Jl&jY?Jl;0N0WeVp{vz|et*+MRhZqOx z1731sPiu)Za3IF%9lW0!9;edOmm{QGz(!kTq7cE96&P-V`KHGa-9F~~n%ZB??40+c z+j@p}N&iuA@1Zxj-1Q7052$Kq%c*lp>eLjrkn>ofHeXon4_01H{A#<5*r*C7q$vco zkYj1(po|k0;YuNp4RP&$<40(R(Z96be~#zVS$l`pm;n!5Du*|4js?>|ZWX%_?SQ)4 zISED?nZ#Za9hxauQt1m)4L}3cV!p+G?&MMyn1W-Ln^4KbktkpyT-*H8#`4xR&DGWU z%WHN?Pubp>H3sDHn?3&0-z2?18;`)Z-{k%AVSL+uD^TCOL$N8K^V}pVtP_7W1=DdT zZcuMoE4PP5v|o)I3Tcf3@_J$irIa!2-$dHkrmuxIi3D8kXVmH5yZtQv zK~mA6Iu8E{@1;9P>>Nnk;B3KWpjH@9#>O;j$cVwa`2N~FYdbLp%8q#yO5|XBpNYyw zRQgK*0=~vbr1J%^<)fnzm?x#^5n@;QglU1Ex z_+5M*@5R^rBT~`Fn8Wb9_+#En?|b(tr?1~jdL+wN_rJi3G&Ft|oAmf;=L65O9Agv- z(aB<6g2nB(x_ti<;7w*qFBFHI48t7SM#C<4IdK&E4f(&4{IjdvN3QL+0ObPg$NBzJ zzMs<=rczPwmQ)Xg9RZp6dy@P&kS2#2j}fg8)6RECyW^t0-b(w#%9YLKmHxUEimmI( z_Z2Fi`d8#D8zyM2!{ifxuXZo$Mu!-IBzM2aciH7g-XgS@09Z=^HDXa2QSfBrzYkKm zjFr*qIu!b0%7vUp3jBcUp zpt`{!ha$khpXv#M7O96lxhl}XCSp-mQ6=L+c zSX27#Nn`C3+sN6f&zXZc7!Z_}#z5{edjqdO5wZhHw1E3Q6ZF;Gr%7vpVl#Ooq`h6 z81_(g7&3%Y8rzq_emu2f8ZN?(Jkya&FxUI$r)9BXol8h}jha4%0R~AQT*pkI(|Q^> zy8qw|_ze=%KvlWkKQP!lkMCd%!2DJkfW2p(t{#=ZW}f+ktt^^sW>5FZtTQJ=xcF zUfaWcD8Z%w-hefNxf_!m_=9UAe8kF{$Rd?DoVl0$+SezUOIFrJ zL>!=lgjOk(w!+S*;{?C_HXD}Ve4qOcV4;!*uoN^6TyFC)aHS6iG?hgiM7siKe900lwHOI6#E=Q^ko(LYWu?s?yCttds$n(uKc+e8e=qPt&$j zq@8=+J}c5_t%B4faGVPkzOjT=m@7*{T8Vp%0SqE~)(#6M1hSR6*u%%z5>y{@;+4yV%! z-Sf4k`A5EAx&Co;EUoKcg3X^VW9>g$ZcAeUJ zZIqh^8EjxaHD1xF{WdQ;enl~(zeTq!pS;|(a+i!~x_~5(b^WV7)?9y~n7_5nbwtiE zU6aKuq}if;X@5$EX1t%F!UZtImy~viSTI7u6|FtQIH}!z6r!3fcCBpSKwI4BfB@*~ zvbMFX^}2cLaO$z{9UNHKex8>=WBU?I#Aqa=U6Y^WH+LKM;>edeoR_nL|RmE2YgEY^txad(u- znD^M!nSb>Jqbn8XFuh>IQNJ+MvXQ|~E3ue8jC1D|uXsiKp5D4n04K~VL;#s4UHiF& zwVQ6NNYxlpG3u-B8*e;ydiKT}-DlneeVzrOet`-}>Sazzn!ro_K4uWo?Pwg52s&9w zLU9M!lIslZH?Bx3;Vvsljs^ySo0^H+=mwnnAw$$TT)cbB`~9~KpQ;iH&uOwd|Auuf zTkcog?>t59R}b(kzWM#6Go`&piI8R!>(jq?ui z{Vtwgl;wX5&w}%Vq>9NL`CfYFII>M*>{ISnXSFQi&MgO30$Mxr@U> zB1P=H{?QJ*hF9Rg24`NC%jw)K&(}be{B9fLPQ(o)`s31d-IY8rGN-<#4u zAl3I1=bgrUAF1@-0q=c0i^quPSnHqUz0NnW)`^Fq<0u`~na~g*?fe`w;H*4KMyZ#` zc1?-Q6%wQ~sV$0?W)e!47TnW=OKVzvzWqz-nnqE~rLlMgbBc$F$TF_;cA`C4td0E; zY8Q@ZKAjB;*4d6jSySTrAVt;@(&ac!?d(o#=?E0{B;>Oxvz>`cN+Iw?EqakTd@@T_$f&nI{`IgGbA9F5K2 z&@rxh1TKz)eNKaRnOZJlv)a{q6Be&7>L**9`R&DNm(B+|Lc=iri?gq7brGs85ix^> zb~eiuLcU_NV)Y~f+tstZ-(NJyjVE;QG?{zF7vg5k# zyoKznXQN|iFR>}QHEq`B=AN;(>YeeM!5N6W7t~A+|_l$b!}eO1XeQ zhARWxdzU(FvWyrG26$Z1KbQWC`$;EV(NiGoGXff9C=u4cmIPgpg9-8lsd2-9OaoV_ zxt*UA=gtNIQ=rkAS3?VuW?o;jOk-Vu9QA;l8y7i+^S@e`b!dC)b@P(%QD0AbQ#O|G zyML9d~}R4#B|QvRS;2+NrjLB8;C-7TW;Bj)1|vAo2DW;so>$&+nO^m zZ{dj5=%t0kex1Yqg}Grjt>RPZr!~?hwU#$oV7}~9-5#};Pi&njMm#|58u?$%n3Q(0 z_52{hc2>T%B5KN`z!koagF?-dV_tV~Oj)ZwbiZvjB{e}ek2UR(XCuIF5R zSj3ts`qgFkLrM0lQ)$jKN3BLn&|3Fetv#1V+LzbziqA#@*Ty!szur1bxzJlC8&VIm zAjC`9<(R-A@pqN{H;{(CX$^SA-n5}J6?d$nY#?}i-N_P>nm=!abNC z4826Do^IThcBR^*!l{q`ym_U555!QR9UyqUOj>Nfe+c;E!^bpAloVx5aSv4}e9M^_ zi*gNhmnfff$0ev}+0(S^UDw#Ioh*Q{t;trv)z$j?tCtjeGm^N~Ge@^tp8)Qg=~r4; zlYs%*!irCB@xahDe5)3lEO1T{(i;rQ>&>aIHJa1<;Wd}3G_LA;aq>Sy{#TLCa88Kz zSHnxv;$%&;OE@h%ZB+ zkzY9*r}@l^j?8`5rWezu6yGpgfn%CkS%e2Rl3v+@AEtwi7jBAo7xUD*NV(W2$J8a0 zSi2hQQSwWVTE_iqM%{8DjO=ye7-g}*hLC;-FzX{ZQ89~fE-FO*ujzC><5SadWUjX7O+>>dY1CH@O!QSaZCIk z(Z!)rnwYC2``i$=Zws|Ha0GPqs03Oc+ZNV@OlYhn+X$ImGP#tB1RKhpAGk{^G|b}& z<152zrkZ2+s;rDr`nya5A;0dYM>4R+!FxW0ro=+RB-8H-UgH3Z5Zoo=&?m$r$lD|% zNT3^~I6Y_TZvih&Z7vtwhI;G6jqQhv?~tL>vy{_5q;gAX#3jAPc_~G`@o`0Vf+Q|6)G8NI3ZwitJXPp1n|BxB`i!Ur%F)mxfb!P`zRq{s z%}WMAOM2v_d_QRyo-2Mx@!3M16%Vt3U)EC1=0y4R9mui{L8+^McS)fHmjSWV+ex{n~G)Us(AI+ zf6Ym33FBaV+}!22&(B?yenmm}4^xM9Tvtg&Unb@IXtc~|QWM&>-bdcAAg}d(&hYBc zq2rJj^H`h`eaYMw@e`2)!j+p39l~wlPB_2ii7U6{54UCySQDU4;zBvh8JyG(WVLe| z<=MKIoj@&%IAlq8Rv}6>Ny%yZ`DRR+l=-A0eNO5stOxRW1^l5yM^>-iS+sP*?Qvio%VzA|H!+b6FZxGUH!;;e=6&=AF7(fDi2M;_ zeq#R-i&n9Df9-1P>e;uET&1%4V0p5b$3W|1BerermOu$`Lfya^1Z;Z*;mW za@W$bG>4SqxYpkQHE?JnG@48|RQHMUISpvh8cbohNw$X!>CQ?1lVQ~>=M{B8gMt;z z?CKe5jk%R|ZEc!9f?V*c(Nm`sY|@>j~)4_sxaX5ueOT4r3N?O}${Ur5W`( z4Co0mkjxfGz)6Pf>1*oL0_r$sVScDrwQ&Wv*5=H;YXo#M)V~aa*e1uqHg%}0t_!RI z;zC=W{yc|pQK6V`nP~V}!HTiPZ;j$Hyx>~W>(yEj8C{(@xVW@d%TUyl=NM`x_ej{q z54FMpU9OHBOCzym9xF+15+9$5=*6SZ$=CIWx-ko1x{SBj$j@A+G2$Dmbc0x67e;(0 z3bB~sh2DtoY>Fw?vouTWNcDW>ka9GEr`N3!g%;tf1Mt;WnCl7%%GM{S6g2;@_S3fN_pi&G|P3}1+XLJ>|LE+#=R-S?i zZI>;Ps*zwS@%P3w3--Y^f_AbTlhH4kP1l?cRh#5jYsWfL^%Dikcv#(0L$g3zMRS<+TJOhJ_HSOP9xw zT*|Ut)2{aCSy-@8jeUigGM94;K~rx_P-w2E8QRjTyo&RV^&Q>zO8?ZfNBWnBO{)s6 z*iCl4>0LwlTQN$PAt5nSduvN`7j=W{3c*q3Z3yNAn{Qd3V1OG2pRR}hAvCgy3pzcclW|==&rORu(Qrn5d zW$#L5XA;l8E0xV8@eVQAcL6JBI8W?KMJS{cW_4HUI^s?ayHnYui3!E0?@HgMlAHQW z93*z7)){wa-j%wJ#$j?-YD2QH_7=r{+LhWu4oa=NQs2?t?A#Q`#rY*XXm){a&GzRn zqF(7OPZ8&33H8A4%-^vj9N8VxQgrg98Po3?jfqPmcV#9ewv!}cS1Oy5Tw_;joJB~o zD_t{b^6pecGzAmj>`K3;b>iEVnoK~AaA{X6I}@U+U8!xV5PY38x!0~#T2ifvddfqt@6JMuj^=X2&p>Bqq#s(})h-|PTN`$>vu9j{3OzF6bIKNB^llisc_=KN}zU7ll10Zg{f!Hgi8 zyTpYi^kEb2)jai_p3dgER=V#W(A@j>~?pp($7F=<4WV* z?r+rl8R&9m#J=0T&Z_>*cAULpw~k4sqrAINwtWWr&Fzcm?{<5xz1Gh_caMdZarb(B zENL!9#dd{Khs^0{FVjb?39084>k!Fee__4}iYJxpaBX)h+w);8|=T1_zf1w;t@w!z8R8ys)%!5arDLB@P0EgEC#m zpJ1bZ;P(E_cf97d+ZJ9kf7|Uh_inxA;Ntvkiwig3e$ceI2OZjAeg5F`()rH%0NWV6 z4d;rR0Z<)F6Iy!xqWzysD(yVeB~+*7vs+4rLxX$jWlfer<3X8DA1CZ8!Q>7cJ$`TH zxll(QbQSU7pjUaYsN&!TX6`Eo%Z6i5`E!5YW2gQNet#DKQeVPwL)Ihxb#*A5eMe?U zMb2+-sk<1O&-XvI=C8X|&cT!(NEICLHZfnt1kmnpdTdYYBI!!%$DNximk1=Vk}Sa5 zE5vG>`1SXG6V~APCt+-A0h45c-)eo)5BZ%Sh0fZhnMj~(3dWff?l$R%4*3(|Sn%Y* zB32Rmmt>2+qMJ3ansjre&C9}7yxiye#1_V|cfm61CK7&F*faBXA9@Q8BK*$A?Nh_l zXiqO2tl9+9FP(nJOmUVYO+i{?*^PE|MCVy8xZ$@cJJ$7a7i3%qr~D1Cg+R$92(u(K zRdEAcHZad&J&Z!A)WHfy{qjH9WA`pRnDD82`F?ua<6W*aqqX?MdsCxWpOrypBk=vrH1HbT~6LpRgh{Vh${&2 z({Rb&F^NM?EF>LsW<@UZa`}i|UR_vT+j6o$$KR<{bhV4q+E~u6#OAbcY88jd6f3@n z5`1=r5x=@63zbu=8&-t$E_Oc*n^#W~JOqo=bt1ufC>w8=S-}%329l+CMH|@Ir=fj) z`|aG1`BG^1SJSRu!ilzw{aG{e6i8-#iWRKgu+u)-TXRpA_~K43@&m{&WA-~JQkJ;I zN6|t&Fm0X_H>6dfEh+T31>RNjQv9ilePYJS$;wHb#|n)BGCMBt1}76jpQ@A%O?xl# z)jed2#d!=^^u=9E2>rgoHsPx)!9ouH$)-I^M-hH1MxCp&v>GMf3W)hhqDuE&Z@ zPC*#w9wbMh2rOoEIaC@J&{$!06rkE7;K(U%CUPW#DoCQUyjlgd z3AW+)$WSpohM|i5>gdh&8_SyJZsuv<-itqE3L|>U>l`okbtbcFt_=b62HGmEwbGW8 zqaldbEs(xT=!G!%J}ds5t0JDQ3?~)@&PXgI#CH^{lG<9W zAEDkwQX>|}>=??$x^brRXc|1H^O@zE6j91fb7y)FTB|v#nL~oiT@!+yUbHU}l9>A0 zJMnDnw64D2??t)$NA_4d0^VKhg#CqkmNqV)T~Qpm{=ymeP8u9tf~(oU+?Ku5=5WwC zhC^X7=P{^#LPLSD+U0~-F>h9^aH%UUF@yV!i&&y*t)HQ7FQrw{wtvU7VvNN;`_+H0 zWp^IN^M&;M)0`V{XKQ_se_z1Ac>cNC^N-e^-=Cga?HM>Ir*6K>`-zABQ_M7!S=$YR zsLe8Qa_L(eAJl^^CGPh*O(#(UvRX;ZYmp#x%`;A!$6>q7> zK&mw4w4x#nn)2GoP!W__zaFSt4!R;QgC3YtfikUAWFwSx5=s1TrO+u?*hoXTdU%&s(_7bvu+S*@5idJz}`-Rkp z$^f%qwVI0vjk>(arnA#Fs;iw|BVGk+Wo&1~MK>`b%H_i$Dxl#tk7@*ItRZ9UsQ(*( z!hQ2UN~-%Tf1C6RNvq>IXkGu4es+sA=HVRYyr%Z2*uc*EJNMi=3Jk%%msE5#U_}}* z@2bO$@bd7UzNf2e?!{kpu&EI?ZuqBj!(YAYU$IQ)#o_+5^415 zwvqKS4j=S;Q19Jl4!>d;#!hCjx!a$Hd3-nRR$Qj&YoyWVucW>4F4Fk6pKpnr9QFBi zdReSdYhSspe~5bIgI+C@?_RcF*^bS%Xi#ILqYhN$GK9M|I$6u5le}$`wkf6sn=r6a zH5T~A_MZmW(JKFtuOEA#c)ZyZFot`StkpC9jTsIc;Jii7^8uM%t-!5+%wa>~B?R|{ zB5C4^V|pUGL!Vc(tu{Ex18|aD#-K1s9$ls1`jLO?_rzvmqURv_iwX`>K_&`~*QwqV z%Ayieq0M~1>YsVc3x2lr{5<}_0@`1spUqPZT-J?4FcU=ZW>+Re$GrId4PYt|(YP{5 ziim4nE%zAZbRYUryag_p5Ibalnaj2!s$sEC}*lsQLy(8!11|*uAN< zoRPNrD~O?VKm~sAvP*PK_i4xTm(qFhx~Ept@$xKs4u^Sa6`Y#CM5`~dna!>q+Fu`?5>x$YByQy0^kX5lw%;Oep2W>+6`c4r=Hx&&1p40ap;6{sMhuSlf zcO6rJ0;^JdI|4E-f1P1m*tD@B6Oi>^f9Si#nAwfaI!7Zp@o*z?4PsOP%Vbv%vWat2 zHD!X1s%&h6D;^;PaHts+PeT#iS+Y9K0-s}oI&r{5Zb-PHJCNCy<3gY^$dTQ3q8LTp zqe*39+`NetbQ=bP2Zid|q-cB&9a1=lP;YR-l6p~wLoYi}X+N{apj;6` z2;`oOiy6~oSxg#NE`qqatWzC?SL|^uqp)vqFx~B*#H@A{Q;=`+dAR2NhLK>E31IQq z7a)_T*`ZraD(q!3$An=2l>-0m&ttzWjt zBVe>)fTSBj-wY9^mwPCZYcJ23&P}gP*EXYg{$(aeo?`z@NkzMUx%xEeae>k|L?gDK zL@=ePMh?R4ES%oln6gchc-ZTsXvv zGaH4bcSb-;2aGL7lIc#mm1@8VlOathQ1I$HLM8gg(3;L;+D|ppy)BSF1C}_Q3jZ-^ zd}+<7exV98>1}>%1wv2)p4*ygR`6A2FwJ=~SxnO?4WcG3le$Qz8RC#=ra7DMLjit7 z9^*cn+I89`G)V;2Tzbenp$SldC`j(04KA)p@Ze?3*a)27p_t3u)ntcVN$W;bOE_Ga zDin}yIdZwIZ`l&8j4X(BrMZrJQ>+HKUbU~NsHuPDki%M58K{uJq5g*#=!f%?chn4SU@AT;Ya<<68()d#_acj zcY>H<>)AM8rOb6>+VBT_E5;dSfWpN1$z6VvWr`?)M&MH(~+83a>si~+q5a74E1k} zNGfk_W5v%=D3!yd&9C}59?v`48fmoof79m42AY>djMae$-uDAfWAPKDlC=iBNCWQk zG@df<5#8dnw?mqpOiqlzL6JG~AgkcM6~&uu{V8>x9#iLU&=-$)iY&j}4Fm9;I$h(v?F|cEbniO?gRb%CdVY1Mw#U@g|(@C__sCzfUiw8CnaRc$GZD!7u7GkRO_ zjO$fQ+<~sHIx0|JOPa70~{$fqpji zB@O?Mcl#Kp5&L|6hDSr$EU47;ykGYFFb|XJewEnopMtLzj~r>V?H277Ne2c5Rn>Yg zWhGONeLl)W8f9Oel^wIg54E#a-*epHhrqU8{40LHS+q0KXzwd&Z??zR095d>{V=e; zj4}ATq@SOSTOH<&+P4x7+3~~%j`(o5ew8{VsAH#dHrr6=^i$5)Z#QR0^Rm}6Y4uKi z+GefQ`scL$-Z5kRM%wJNQw&@y=I8LgcU+Bmi8SV1dgCgkbBdhSe_gd$tl7U$dotZ( zLfKSSx&V{PVjwe$X{iy;wBOWnBLitrEhfZFMXIeg?j*g6DY19Ki&R=#=nF@D4G7gb zlC;iMju;lAjhIaKp4;#;=m(PPz6eRpQYyNYGCfCbCaM@^Ej3gNXXdL-8@N1?)L6%a z#t|69(O9HXY>!={j=lq{QJ67loiHkK?e!Jp;>cHBFNIvwEM`%;th1-4yD6I+X7_6V zvGC6bR>OkN8(1ADyqX%{G3~v&r!1T>qRN95!{l{kP9gzTW=e%MZq(U0Oh*v;Uy>$G zB7L)zYwlJW?^JaosMOZ6<%0+`cRWzK2}H(l1sYXbk*ZH)SRJvbb~KQvx(20MMS|VL zr<8I=(S_kDF`BbpWyk`H9aV{uCru>L)zKQ)s>n~FSKK&>86K|1EZyU%+4_cG^E2V+ zzRzVpk%m9cGW0cvJPc3kJT{uNX|M)dgy-f$X7isME4*dg`%S%PputgJq*3n*^>Wg1 z$=0~u0Auz)J1-P4A`Mt;z?$jz)-h%kRY%byrMq-$3R21K$4eEUh{rNB{qK%RL`a0@IS7$P`hWcB7MESokro8-{ zqEC@V-~Kw^YI4T3D#F~wdEx2*;`iW0`A7rKHy3a;NV+>T&3EBP(=Z}2v2uDqwT$~> zD&(@7Oia^yg!ci*1$+K>=)xGM!srGJZ}I}Aqe08>w8+S9n+_O z#kU-C1H9)%5I#=5Gh^!2d2yH?G}Jz5wHE%X-_aHL5NY6r>_xYu2ThQDyWEB#0Q+(3 zm%mul8)?-4i+tObCNwnQ=HD1kt3L+Zf+jSSZzKv0`D#?5^)U5nZnmQd|B*ZeO=y7o zg8#P1^xZKYk;b_ESIWn`NaNdoZ~tNpE&1@6Z$Cfg+rQ@9wm8~AJ|)Svy@d9D>^Jwc-Y}-! zzepWth*f)~c@GmB7O?L4E#Kp}!@*w)n5d|Ro7ZZ+3phIW$Jj?2bMUKU#^l#B*slH> z-j<#LetQi3Uk66i^%TFQbBZ=Z8sBf=d%TM@zDd>*?;?$FvcZjak;XUK;BGswO-mq~ zjQ2g`@{E8TY1AQ^Q!%gGz`E|YomOu*ueSzF=CuK2YXLap_>I?(8Iw0;u&eW0AuX*B zQOC>2%-1AvVhp7B*W5N94(d|fPlGfTwnc~CapKsNr6LC_+WUN%y>ar`R2bHGsIhTy zx(1Q!wYD~@D9884)ZPaDXqq$;Z9D%Pvlw#ItH0~`7IM?T-AH5p9tD29i!{D{E8k8f znQAccC=lx|6~pa_LbOQolTT5^R`w4(d)3FspF_TbHaEyd14irnDX;Yt^3dpWq|x{9 z22RK`cRH3oJ7z3@jBjzSE>1){8qA{9r+qZne{Veh_T#iU#w+BLF;0=jc>Oear7_En zkH#ODs_5b{68MsgYuz$BUdBW%EnqYF`+HiaM$wkQv8v=VJ5D6<0hrP2H8iHV_IXT} zCA%QW3e`jw#lmx?dVX3+m4;9w-=WjdPFFq3Qn^_(-fDf>f8W!3Gkvedlv7pTE~D3&xpky8~DN@>>w7}cfNsjw!G-k9PoA@Y|I~g&CRcwzvDHx z-_kqZd)>|Rw=Udq+wF_J+i$(2fBXFHw|-Uc=Ec|Ey71aNZo64gvetX+TLJXTGeZJ3V1sb{f4EAI)&vM`Q-}tQ7Lofa8R%USi9Q>i&K<8k2zt+KvDTrt09o2f8HqFzNujik}7ZNKM zFS|%f9$rpQlT|KcIAWaDZrbt!gJd0QA7hDs8l#+frH%b~-yeC5vxibYvax%v#`+!z z?tHqICL6SCi97Z!e>^Vkn9orRUd#^yF^~$7Rs6ox?{huZGOh%kJ3eTN zQj?qR7jwh??FJ{6Jn-7DdhM;ZF23eA2*6_Rme<{K@cb?PueznTSVW)WHnVJ8Qg2F( z<8JWv1#TGbCx3w$%ZOaXTzwlz_wD>s`W-2KPfGt5DX}K5HFQ$zWsLd#!2S~WAlV$m z^X~&s&qvafwoP!=Z{Lk&@!+1GIfxxM|hnkVj~JjxIu!@WrZupVw=NRc;@yL-dU*{5_I8}t^5-|;lhpqJ4+VF7=j^TMlxs&BaAUXp7EeFNRIVsk|f;dqK|vVkNOj|T>Gf3#wHeK~{MqD+UiW22)$|l`J z;%7WOO#5rw{K-4Bod(VH+wC`)d0p>9pI}`x7nd&IsrX`t4y8QBHG%uNNu8Kr#TCZv z@ivQDhE(JPo`Mw^3LJT7>ion+yZv=-deHvr)lIphan8ZBYk=z5tnr(BAEVjz+wQs% zS!Ps+>>j@M5gggf8;-F;Y2{~&bz*?6E-qq%s5&*~X@sL@d05&!_|&DUyoE&R%15DV z0j1~xUL^xi+KL4@#hP+AOxO78H{I62=Vkd*23lCPiw1Id8FGNqQ5kf9~0`IlpH*!orkB-~1g z5f|MJ)Qj3@F0O7`KsK>=mJQ1alUL!7!e*dly5GI?Y!ZlaCg)oFZB+mWeA9*VzS_ss zm<9&r)ViGWT$xWCEwOT0z$r9+QVBZ9(IeMZyu=@$M?J6pCQ z+sI*7lA~#I2Q58R3zEDMVarUuVLW8ErtvxkEktS{nRHvGx4py=zo7^ z;#++S^(wyAv6Tg#a*ndm-n}~5m`%3bi3HB{H`16doDEhA7f-|TGjJr}gB*U+K6MY# zsTS6I4<v`Xwxv%Hf&?otN{$H=$i3l{n&t^|i|7GfZm+IzU zipz7C`Olwa1GgBt{e^SB?%igck;AqG=5FDnS<6pZbnoMd;cI$lE}28|uoBZ)J5N+i z*PHWX#$HX;?ZhXuUTfU|Y*fXjZ4xOOW=o#LFTbSi+x>th&=;wU~pF*DdOjIKes-;d!4oS zTL1N4>%acb5Vo(*9XA5tqitCQ#k!l>JWLrgFmK6?RO?EX+D^h4JcI3+O@%t8_xV=Peat4CRVtJ;Yp(;&b4aVdI*;fxT*>S& z!p9H`_z^}qAK}}ma?G3qB!^}T;VLB6KS_Dwe+8Tf1D<3B`h0j-^t}FYV@5lQv=K(0 zKPFGsPwk@a;zja8xfxoX`0idFwR0xlke-6J4=l;nNBI#(JtXfx8dkYCYPHV*Q}nTb z6=A?Mz0Ca5(~c@8QAWofX27hlS}Y3~n^`77I7_&tty7%{0x4{;Y{Tp539FF%jZNG-#;+o+lNPd(>W8cA`F-hjrjJ_ z5#K&N;+yvIC?~=w?=MGu`zG2S=_8DM+8g3sgz@b)Bfi}?;@g=K-|iam?M}YM&Rk|? zeLvsyr$Dq-#q+$NN6yR9a#>Tx}f+BbMl zeI(_qwimD@8yv&?DeErEnC20FAb%9?)in-SBfur%wh@db>wNzd>A#Zj2~Qg{9J9CF z!M{klzVQB8yjP#*>U;$}wJ`nNcSmzQ@Pxm-1AeCF9=5SALg$oE?Ail-dou45ovij| z;!hyna$62=x`X)JQk}Rzi(-yn0{`@0-fIr8wALGH?Z=2~?jc*hyoq5E21(Y|^zJc#r7g#-m%Ub;UR=%ko ziLN<^b@Ig)@n7S;#tHsuca!=pb&&nx-IKC+ORX0CRnW6#mGK$A3D-#+SooF8%Vt3+ z<-PjpV|M=`Nv(G1^P1HGi*euHE^{F?;{951zO1Z4WNmca~j^;Vt}W ztaW$Mz2#g>$waK<90(&h@_pfBa=`6JEUJRNAq)-gJ>3D{Vw0SR!1znXi!UKeIP3)AGshH zYVcA&wU|KQQK{Ecw_ORp_w{2w=QG}(F*5porm#NoaIYsP7aCp8yl#)k z+`>kCnR@nLZZ$G!YzSJ#7Cmmi_lBvwF{`0Ov&{D!zo5j6~3! zjM#f66Sup+Kw~|8;s@XS=kI)D9i>tBA`0N(Pl7y|SGQh$w=?aY&#Q~;&xZ=oTHIJ~ z;biE{>bNa2xS#cVkb2(en&P7NQ07g>yqce{efZ1#T>dEG6!W6~A|ldg#@427UpEO_G|z789qKE*Ru;Xq{-Oo zPr(k$+WH2reKE~eqqzM=?vt?7wL$d4_7%%w$xlgX8=ql~cJo-6`a9mm9Zl?UwSWK2 zvD&qa%dmFldE=9leMe~FbS>GFp4}?l`n_`rMcpbTi+*vtX~E>??qkmf-_xdV&7JM6 zos@OkvqKyGQ(rM=ysu$xemHVK@8vAMhkiVq=J`Y57@GG_XK`!ZM_h|NAAfQw{@11a z|4%6{J8jAz>*|hDT=Xe@kNSwV&Z{haqm=%(QvB{xT=qfo<-M#F-&cwsPjM}++^(?I zyuUIYr>qvV##cZ;gfQx&v>-Ftt4aRzrOz6x$^6{sY(*ITZ zej1U2glHrd%I-ZJ0*kFy6PDb7kFiLa$v@$>toAwTq&vvdzG}>92QMZRZlB?9{iA8% zth%F%Fv{7444rJPURb|acy&ih=TefSigY+X?i_1$mp7;I7}{uVPG=WCnAmFw%+iIo zgHstKBilvJQ!47 zRK5OyN}@!EB-zBqZHDpo-4ff=d18;OWVkmAmwC&KoT=sU`v#RQc$D`$${*w7)b3sUo&QB`lIdV?5pZy z|15sazK?Px2jWuz`2;#XGv*DEIo(;(G23eTO7TM%)8M+nB(`lC_Zfl_>1s$J%sXTw znAlA9bI>+8L?Qc3uP*Stc_*mcDZiuiPB9&@*K&co5EqNX%1%Noiw~qsl>h2-XUrhX z8H$njCrQTNF7p<{L@9C?Z6`of3R4WE8W5)_cgl7IDh8kqmZ-Y95%j@A{c;GXotDTU+Jh~wqx zKG0&C^_SFlr+mI`W)!5oBu?145ifK{)=p&vp}nG)w)V)B5R#v{58C=#P=eXf5b!}y zLL|CH_9tE(02l4Qtshjhf8nej8r95bbM@or&YY^JFUOA6PaHdal4;Uf*Be-7xpH9Gl3tvO}zI?wReZ zH9PYZ*pZ>(%MiBpGeQ`E;a0eeEZxhP73#;23Uz7CE6x#X12H9PBU zM(mR-%TyU8-F1HTNStY2NZZr zD3(?VKDeN2ya;%901%Kw$F9$FzH_t8FIBr`y7(>XDD5TPUjd_<36ygJC``0!iK0qc zU$;gMauY-#oyc9`07jn|T9SzM!yb1kP9xZD?h(O2B)Eyv6pr-hV9aZw5OtYehbYq7 zxNvbq6;+%%Eu_p%T9;Ziw7`UMry{`v<_CwBCdze)2?%@NnJW(@i>Ytw#68o!vrdQg z&eui~1+MSj?5a-q4GEZ)Q80{{BcFc$dd3Q zp?Jb>knBjPmR;Z{>vvMdEx>*Sv^Md)A`JTOe*nSW$b1GG>@?S`7fq=l*fw}XfeygH z%YzSOEBNm60^9CDPk$%n=w27_BaCvS1A9AZmo_!mZ1UKK8HFW7@)@DG&VGxCJi8tj zai&AI1X>_=8cnaNXM^!j-!o=*c&1m86~XBfj?c@iDJ?6l3f@bCR1eE_qaAPJ30%c{}CbvV4o+qIv>Xlc-a ze-=36FU>01hN&XC#9o_9@P3)^YHPoqEQxMwv88K}x53gqKsxzo%-|$Je%)2sx#Sqd z(!C?4^Q_Xq3E9V_q&&G#7eAc-0iX&fyk^h~e@@twm zChM;TMtwvb{sS;O!kz$3Fnx;1MgeU)C+&qu11vAxM%$_H=Xyu7pa@`DEU1 zVuFhA+UN2eF+LH-IQ<3XnT(X+s`~lu9_-r6HH4~P#J2!*|A;nxG+?G4F_0O4XV_j0 z8#s#Z$RFMU=6?&Ag?bJFYI2k=O{Ov2yML_q!V&fT@4(*H`VI6SSZ@I4_z0NKlpA4`KSB9NIuhQ5E>w@>3OTDoj=x0u z2qWK%$Y&b?xkju%tHY~-_1qD4kPnb;z>?oQSFNr0*WO!!J!S{gI5Dra=HO8!hrilz_tB3&UBwi2?G%#%U#x{nl!OMoR{S- z4;d@q9vlJpTYy_UM~b7CjytAMI%@)DDxFwY-!N7?N;$d%+{tgr>df#v*b2ky*Cg$; zN7U~dsh@9SK9%#e3uTE1fl&v>7U{B@e~|RMNq=-|`s6F;?wFoEarE5O9aAUgPEMbi zo~_p&`$ESP{mjU|a=r-A&jkK3(?y8tjG3m9V^VT}2)Di|3q z=Rn>H4B17Gyb%VBNnjXFTX)=ySjDigVv@eGAK?gEeF|98p$ixh2CM~O`Pq`|lT;tc zlihTq%Zx<62qS+d%bz+_STXtTC7~;T-=2rvm|My%GDTejg2)H&5L= zvjmB1s9gCQZ}Pc#|I@{7%jC+p(E?7^ZKUdSw@4RNCt0en6V>{0YXB^nMUmE8&FS8h zGYf3HD&$EUV|K3i$45(~z4je1a-L=M<&P3SPoLf~b?)@^>06POFqZy(qV<}f6m+n< zNtR4tNOT#Tlr2`GJwk@Taj%~AGiIo)3$TN){jP;zf=X$Dh_%Ce{y$^VXvbLu zIEyvmwhaCeV9_n&&6rCD{JeU zJ`1G7SQRmNIhr7Hu$(({1Ex=Jwpk*AEz)MPd15vk78{6Hr5=&-77;rk zbU|S@@5|#x0fk!6y1F1MQ?cNTn423K(Z&T^6mc=T>26xi3!Ii0b6!StOXEX947P}B zKDaR-`XiyLr%PpiyxoRG5h^F-5U@}#`)aqz2!=G@x*Z6iniS1Vj2yHVGwyyi5z>aD ziI>&QXsnJZ(N`jCY5ZMAF;azO$5_ZzUy;0Ue9r&745g_*s4_^ zx5LeN#|2C{Ms4&}yFJKwYv$BG6_x_~zB$|IGKjs0t6@`ZDel`|HdZ^u{&^ewvS`c^ zKbhhWw>0LMD7%Uqo9#GE1g3 zK&X3z{&WuLFZd}8BP(dUvosFn6gru3Kw*A^f>_(uqgjMMwc0^l=lY2QFEXjC)drO3 zeF0h`#E$xx?T<&~f>!-ad{uYO^nj+-F{Sb27EH4;}WtxQDiBe0HR`9EGOJINi}B zW3?t_eP=4O*EgfbPwn`9W!t`jxNXimQoU42Rn=;LLfz)6*Ji3)8rNKlMh$H-nLIM* z-$*umd3{HkkOMn7rayhubw{fDH_gwSI&;j8n0`A_zW`d<$H$L({bJ5ti9X41lUF!# zCX-muC-Lc?ttek$xdtV5l5KA%qK}l+{~+cgzR>BilYIGcr?MdeIozT*ICSk(vFf|=hNG!7|CM;kBz4yeS8uh zLG*rw@~x}zf28n#rcnNTr&jAiHkKQka8!l!GPcV|Qy}7LTfBFwMhck`-7h3SDQ2Ri zMH5LRkGktVP{hScoV~q$k5s6c zg48fH!w?|h5bpuoLeN>AwY#RrYTv;4eLK&!JQ4qqQv4@~i)Rtve;~z=qQ0@J9@BIb z(t?32r@qS$TE3fl6Cb23@e%@twQydrMVb|4zb2GP;Q0bU^$JMY^dmjN}0h@=4^Y76QcsojITQP z?iS5SE76vlB>09HNy?6>NN6J#z2|y86?T})wQM)Hw8K;^z^fPKB-zD?S{?d^V2svU z(e5O1u2mt~)WVI@PookHlL^rrs7h+1RB6H~8e3(>DZcqKDZoXKF5!EB&$~BVG=M3Ux6$Ps9_+^_o=TEs#`Hv8a9{w&u$#Z-$XNhot2%}BXGpVd@fi&)7 zWsg1WFrG;$Dr~@tFkl`TfEf&PI<{;RC)c3LdL#<{m72xLfvr72eeW1i-D$H0 zvQ|un`c-GVKcAJtXnTaw2h!KEdD@?k9LHhYC5jk!ojEmNi|hL-Px?AhPJ~h3zvr82 z!0P5-vc>g&@=D$(@e| zl^ocxydTWU;~X8@L$%uOS2z!E7@XhV0#30P;Pn9S`6KG}VZQa-w6xvHHOl-_?cJ1l zW<;6$nb%eJm$sVG*PnBK@vy$R5x7I_FKq?7_5iSj?+$}~J+Mn_G3W)U&xUke#bK2W z>7n+PX7U)*w6KaQAWGCaX_MZ0-zkwFr*>{y-ou&_BP}ld?2NDNt6pBXjNnz_teoMjQw(-u*O%ofwwZ^6aCXG^r_X5!}=+d>D0VW`TNhLif2V|^~A zHL&_^E<^M{sem-5@ivzsS3-OpC?q~uwoC>;NujT}Dhp>rfre9!ESC}uV#}T&3fvaH zT!J}F*QQ)SsLO+@HUo+BD08uH)kt%xGX1M6hy!c}?^>p<`YKwPqJeuBKbA1ZN&qGN z6FN64$8mk~;~PqVXDw|bG&tKjwx~OE_^Bs+twtDhv)>-^?IV0EoSPRR&_kq`DIBEc zTXnv_*)jL>TZsG2+{Q9r5k6e9L4M9j_P|-TPnZczl!@VU+z3BVhRGVh;%z;<-oO z2m{9FM!?VrU-hcd^Wz^!HI{ecJ7=t5>%}?M-&p6r=VYKP8lG!H~m!fNolOx(}opINo!}hM_atIo}7M4m;on5>}q@gQ;>ye7Sy=XZ!#J zB-r`}%F7_m4Yy9dE|hgRNo=s3wqv=uA_{13UG5H71~rSLoQFjj>lcR7w$Gmat4$ll zN)%-v(V{4=CLSOfnXRrXr+~Hk_;3{wEcdyB^iit?kL>?oeOJ)Ia@iA?mcv7Ic(f+K zsYIAim2=57!`VlIW;HkO_vfHlJr{gQ_wop%{I7uE5bq+4Z;~G?4(kZoQ?V+=Y*g(L z_&O~@rVUSSxUOH+H^Qj5tzCjOY`;?`@mTNa#_5pW_5c(VCg0Z&IigdybBq*gA)Ao}3} zU_F;GU_=E17UPY_sfhC+ZU_= z#*~OFMJ3WPm}~&+DAPo?gLMpo9fo!crmVy}Dw5?8k8%|&5syI-TQKGNSftS#D*1BJ zxx?|0iemd-QljF;qbG-mROa3i6Uo)8)QBkX3+*l?>Rk)Dl`VN^xjOs8h^j^lD)FR& zL`6KQR(o;6AtH?Wyo&uJ-bEPSj*s{zd;XC=!pJu>xF_Y#-{_JNVnpnB0W-pYE&fit zi!i@2?K>;29gup$hY?-^0= zUmx+Ug6EQzUThU^Z>fXufhaq|s6z$cr3@>JN6Y>cm^yy~R)hg_OWsQcu|MvMM#LO> zG}msqG*&w|qTEBwv8uDVU&_#eYwrNI?(NZ*2%}Atz#ei=ZwGwsn&q+DoX0|9gep(us)Pe) zatTKs&u7W-6V6IAAc{Eoh%pJ}Zb*(&~tKbZy4Md|ykO!iZho8)q1@_P8T)l@L z&qF{wf&;o=Y8AmC+Fd#eZBY%91ELFZ&So0M?~~LBo?}t}$Ta{xP~>=+7ap@6D`|<+J!aXR-JU5k`5>;@%qXB8+cO81e0CBffnp-%5K;?kvtVyU$~a>+sOJ z=sq0vi!kara39WkXy}!=cJeiTb_T2n1LnY;ID@&dCYk^IwfN1zlFUTFh%jL3P8{zd zjBmOV$GZsQTg9C?tHrREUDx%qGhjs+Fe~oG8O*_!p%)80$w3612m{_W?#3B>ALP+z z@Ovrm$ZI-gK`F_}{ZXe7ADz&V0Vw@8sKc z7Q1LtW3qQ>26p9nd=0Z*tq`@aFA?FRbO8JB5KBJMU0K80!4YJA(cC-(O*H97>qB~r z4bRpZBIvnSvM~ydbFO6~!?N;y1|74m*ZaWaq^V|}?sV2tP4l(RSL4{dE@f=rr_E~c zI;Kahp3(Yv9jo@PJxDf9{3W2FBpa9YwGA^^j72x8FCcu5 zB&N<^(*?MhpJ)tt96dW1B}l5ZCSVTCDC67seTe7Sy=Xef1&^$|76i8ey(B0}i6AL) z4ED#)%BW*m(PYuzdD-pb>JIf%o{0ZXe!n;uA7f0_j`%K`-*a+t@dRbFD85TRQvCji zYa$)a#rF^wk0HLxzWGyg@y(P!EHI-7i!ExYW-OttEDw89*j;F?E?!(|bg}n#A(=02 zn7xPv>E)sxiJCTNf%p@c6qWj-Pc&OT_5nM}K_}_>b(UMEr+{tN+l0HU*U~3*WU#lQx2D(d?CC&1JP>)g~b- z#7S`_bxO?NfcxeIH{w4-T=(XPzrFPR|KgkOh?I^sKr`bj%ceP^h)4adY~6ybrX5u4 zGw_uvR<#H3bG^RrpngoRyk1|WPn~V(ftaQh9?{$`UQUUyT7T=&aa!`7uXUd#Zz7zc zogX69TKp?QwYyqRESayjbH{&gwFhm_>4n1@2X3x=dW$GzZ!EXwP#%|H@DjUY_ReC= z(8boWf6u;HYX1`NwyNZ|2QdJ;XAbuPrCH4Gfh-n>eK%Ls!%#czcF>bY?=*$u7>yNe z0}}zAC5%L%c7#6!FP1Sn`TDV1o3O#7G5f?1e=7?X{`CbWxONO}f4qM$=_L1Gxz^6I zSFsDADYV1hVc_?@&d<~nl>Iawda2<1soVPc76z1gX-57%M5s-i;xyB;4i8s3sb}U= z&nUC?O!9;vGs%nH_Cl+9x|4o`I(AmkZin?^z0y~CPdXfKg(JCGFwCfT#7tVA!xHf# z-uRBmYUfHb6wMQA0elh7BI@os>0A87h7~ z-CZ#J#fF7tXWOnaLx}0M8;%eXgNH3DocZdp7s)Zj;0NuWw(2517&4Y0HXY6ej=ZYB zn_V`x_93;2&!xIQ+HNUo@A%*TdHhn0f3xG=Q*MvQc9iw=m<(}`E8N@c^4Sk@1;gHC z`oenSXaGjxp8kjP2rbSuxXDX_*iN5$?%$dNGY1xr$SwRue7d zb36+FF@>_BsJQGMDwOh)`xM>EZxu#`@G5$Y-ei#_*ED`^$__L}hh*};5=oBrExwA* zz=%sfPVtYk58O>Co!fj|va9*@FD&Jk5A^)^Z!X2fqs)JQWs2X?YFv^75iHc)-darU zcIzzoGjqeclarT8HD{KlSe^H@7H2T{g=ZpZ!#A+eZ`tvHw@7+58&2|Cs~+O=UFId9 zT1~c~+H=0m?ab~<^Eyn&xn5@#bZ2{ zO8xcP6p!@3mC_gNw3|(V`nZ$_mYb_zi;aGGQP>)2uY^@@VPH#i7ux4wHRcc~=4v1u zh7@5kJ}ovQn<0U;v9#1))J^lOp+~H|WLggyu+%2e4X9?V?%F|atH5z7T@ksm=IjtO znytK(qmiE(Q#Zy{N|g{e&Khp5t0c{aJYG|j;lECWVgSh6X!E!Hl zI<*$K*K%qxd)%%VH|4eE#-h7Gip;V@C4=ln55o|HH?A&oLAnETf0uJGQgJyKE(yRa zQCP*FIGeH^rbJWWSiu%&QZuBgK0Kw`Syild&^`H@GELR#vMrdTk6rhV1D&VIE z{D$phAqhCtP&^pWmFt(yBZZR#WG>zi=-$MP@aUAPPde2s!P*s63a`^{b6T;v$0v;5 zFKl!Z%3*+#tAvTeyspn0fy*~rM%K4qSd)9}<}6HI#JPdBE>S-iq@E}XxG=L(H1XBx zqZ5ARn8uVY&@k|2eb(3F_gN+<3N|Rha%6cd_E)Qv;G6NOiR9?TXh1ZJjTq!xTM+;{ zUaLek6VXIlpHbJm4nmh8`{=GjH?+)pe{+K2o61(D8w^#$ls^`4YPoheY#Dxs-<^G; zaZIb@so|8bjB{yfssq>0;a6IHk_feTG`gaHOwtup*>zWRq^yXHB>U$*Z>CMfnRFpe zCinvn7$91SX4E&xW@~7}+`j5+c+tFW$PS%t(66QL-$)y>`+j!g;*?M2o$mON?PqmP zA8~s1EOs|Iw2f=wI0SYKQ?~4E`z7GpK7}P08pKLx{U=nDnZss7#1L3@v3Ek64mJaL zi*Y?M-&fJV-*8Bj21-Jk(IeB90+|jwC$EJ>+oIZVQUXx7o{tol+ zSExpRB}C??;rQ}jYc;otZ`%6yXh%iYTT^lWGQ3h*?lcV#zxjE7Yk{ z2BHXl&ZEAfE4pyTrC*X>K>>P6K%gSC5SOw>fk|x`?H6RGx;@1@70nd9_`BUk!Jj6Y zQ-ncR{bS~lq3=wOvWwk}_P5UlYykLwuM#;y*^4BaF8H4d1f4snP8Uq4d00f3NGIM4kvE?^PUdULILW zdYt9ic>-9H(+C(51}ymv-V&DTmz00s1U$(`1e^#1-qj=E6=z_r_DNt#jxu0G7_go) z0@ikC;r=&`86PoVM;K*1bvtEjF$>?cMH%u3Jgkqic5E>VKf6U4*HA`(K4rE!Mr`n- zWl~=KeJ+y{{S{&Kn`jDEGASbpti2zY`$mkn=nO+-QbvKT)xY0mQlgF#MqMRey*-(f zVlfq`SULjDn*FPW*s4F5$3*OkT?weKDq70mYpo&=xYH;EC+*7zNM@=c+(9?w^zc^S zkt+ZmNm&kFd6q*%vLsy2?=W05ut^A8ZKC$Ef9>b(?r$A!H>A)PskaFN`!j;Hh|s-> zV=y@~qP5}K6xRZw<(h||WAJjW)5+MfW#bO&G=q%s4t=@<4_`ZP)bqw4aC;z8&zBRI zJ&<$GEj#B-GHzeS395c;sAg%x3BlpA3DriNJ42`wd#PSxFO?N+h9oN@sY4Rw(9{5H z*Aa8^*T?;bAx^+lncmOlH$dV-Q}c6f>n znC*D8j+)`{W7zZN;%;0eHzhuYc#B@K9zvcCr7^x_vLp!{!8q?+m*YDbth8T zlE@{{n3kNeX$O`WIz{a1!UeHCZ-$Nsfk=MlM4+v>i9?rMUtjA@?%RjF(#4I1350O= zLA${Q{(5WiV&AsrKD^a$w0gULc&v6W?MO6=649E$g3>fOi8sN;F9>zn3&13FZ_&h| zY9Dy*cUo89|D?}}#9sTrUtce@vi9zO|ATT{k$sQ%w}r}HjT-2 zd7(h8tJB39fc&JSCAwqvk>EGQudL;2#8_VZG3Ourt#6YI$0@jiufI6rPdzQgAIfgS4tE1CT=*8_6F3Tdn- ziINtyE$v3d_=X&nA~K&o7a}`Wvw)tfS?Vykh7dWt>4t`3ds}?dZMX`upP5ne@ip()mZ|YWyo{Bk$|^y`P6W zShA15#PX7~($vN|SQstxHrv=hU*EE2$-UV44KKRk;K8Nq4_$xbfu+WQ7arKRaG>>~ z1C1rnNQpD{_BB`p<8b%#v+O&5+GPPG+xyJH`dDQe8^~l!r~#hTwWNtW-_7qQ@gy#N zzvjH#`!nvdFVg-H?1Wy1dWy9dTskf%$iGdN)VYkmu&a(KUz`c=Ow?AEjp%(Y56z85k#6C9$YocT z_I2LsKIZzoN-Hg2@>Y$MBpR!6y)}MgYyVBxA3D^$e(}(a`x^%j>|0tqwA9>x<33-q zJp-MaJ%w7MqGOzsuq)JTHL$LK5xhRDcS5dI@8|xk`_nCe*s|e$02j&sLf~9k{=NiB zkGyXM#)}AFE=Osmx}uAk^QkA0?!hn7OX~Y?mK;U&*TwA8n|;0iT#En6k9&N9GW7k!>D;|8#UuTj zQ~JlH^xvA|ui!k<#ZUL?{O@zTpW(^B+x_!nwRnF$zi0V=p67O+J9zHoiTeInsl0Db z@u=^useYlob&mOqm)j2i>7HTM(JM$>fms>54$hdX$rssmwNFtu^+h2u@y9;sa;gyq zF80fO%V^pq8{_-Qqp^!T5k}s3^R38JTUcML*J{h;)1IflI*-vS6yc9$;%5u+j8|KzJ+}Q!N44h|^Hp-1K%KuHiIq#y++j<9iM1+X65k{W(@huxS@s4u5 ztv@C2Ge+cnXvDXVj`;Sm5#K&O;@c-ieAAs2MLEAS*h0uhoN$?cV|3sAiQ;ieTIBcDz>noMzd^c&-z8@g~oV97~>+oVS#5;SxBvRKX69P3GvLze3~JkYVQS> zczjWp2%}EoKbH2BpsN)7Am4APUr!vJK7Mw936oDaE!677;n^b^y`yJl6-=L*oltaeOKWDWnhOsbeKl!%A!{Gj)zaw@bZqD{?pCeF@Fcj500&4iE@htuq^-_&= zuhHK>5f{(GwbuH z5;QnI6yuA?`?VKyhy-=``d=EWEfPv*SND#y-40bs_>@V~iQ(ehC63WW!)y@ci+sOB z9_jo>{KNc~f24^2A-{EA^@XCnx$wFQo@C`R_-3T|+&isb=jaT4;<^T9!26%TdTI{- zXZZc4x%fZw`&yp!Xd{72x0=W9h1w1sezCVUmm$L!TB}H2E>2FuQuAbUVBwx_stL`h z*PDUAfH&c8O8^?Rz%OPQOW^=-h2FA2_+B2x;Zx!wl?(Cd&U!4U>DBW+N%q@LO9;up zm==LcJ)eAltC>U_3apnl){=0Zmc4NR7Y%owuoQu4x;&z@;7m0|CmR<;yN69AVM$i< zPN~LFL)!Ze*N=I$6-plW%l|z3B(JC3CE9H}a15M9jzc8hGm(&_>~qO@bG&sq_u_O1E*unW5V6xH7Mtqo zZ{2wYlA5zY#m?>(9om`Ab+&YEeCAy($b^b@O~w+ott3rN<-9L?4y6v3!6GCRD_5(7 zWh%C*tpqzOY$33NKxk*BasDFp<5KpB0pmzo9a`^m)lE{=axZh9c2z9f68|pBsgH}U z)}j8HN;!0wq&i`;#@t{b5hii{UK`)<-?`w6IcJDUP(9=f!*;`Ng2z%@4 zHay+jvu7SPG+j<4ZR^lvKsSSR=wKgMKUc~W%lxpIhw8229Ywc7E?{TPSPOpp9@%46 zeL+XC(NHa~wu@a$YhM!nEeJ?$X?F|6Y>c zjlnd*+kP_af}Bdj9AQk%h##}jXG*4YM~oALBrZE~G9=P!Wz>HZ>BK*w_2Gj)oP{H!e$l6N(7uuNx3w)j#C6R%r^HQIK}VorvhGp6 zosk>PR0q!GdpBp;A(p31rz%@v>HF>CeIR8lt0$aAXgdJxI7@w1KY*k=OiEjfopa8L zL`+CojLkrZvMtCV^+<4RwX<>IVv4_tQ#-2(AE(@TBK;EQte;JhvkId5u1pr30(@CQK3iL7yEra9LAozSXre!bvqY2$ig0?$B?)h> zHzhz$Nm?$EE@eaZo6VxTshMnhj4_Y$5PdA!s%;YkQ8s^(?27kF;mw;ffnG~G%vF>D zWsRGxFloRqgzErbU$eSJb}!*!Z-7}3l{#=fx1&_;PO&3RfIQIg36t377L(g2Q){8{ z<@T6il^Wc0eV>_6`{v(%m)qQUe2S(fY?(+4#)p!vrxAlPFbhwgnLQ>I z6e(XNR;|!w%m}Ptc|qh@ThV6$#wkZv^y(W2UTAhg81ak{#no#WZZ|qonuyRCG#L`w zYr4D~LL62F92q#1lc%QcoTwk>!XTZUy%Yx5gQ?rV0t(2p4meY$*z9Zs&w<)4u+}(Q zsE}38c4ifbY6h~-6B7?-!m-hz)i2aD>nnkwF8tHYgDVGxW@l+r%0{5rh_b^ZTQo1h z*`$cI?5nfD)JbRTvNm6&1GM{itI@86lI-V-`y|Eyfez(WdV+>E@w> z1A}zmdz|hSV{={#Pe(c{XufkXg}bz{u{q~VC~Ovq&!vG)OjgGBLGoWmzkGmD_8128 zcUxL7We~MbkzTg=b@5oI|n8b*&ts_T9C2#%5>68wiEr!;Y5A zo$e)fOJaLI8=~#Nh>GbBq%+5Sy?eRpg^7A=;sVGNX!;Z!VU!K=w=S3rq{~nG>5)1> zQhBYV2H3R@7M%pW3CU>FM~;AwnhqQcgLC2qzdmL(sF)L?Noh`$0JT>^Dnph?WLLPq`A{J{LOG{_8|D0VDrc+3ybXqEj^f6of_1urls7$|R&^WO z;wWK*l+S?za-D67Q1}q_xlA42#G}3Sm0w(|y_rz^>#O*E7mxU5(km3d=hghan`edr zq}$IjO`!2t?AoM#;5WvM9u|ATOeh)qc5-{W5w?E%JL9{_^BnRI2-j@4FFPae@Y(P?G_U^#AGcu!7M;1Xmg$P3?@O`;=M2+ey`;=(F3pcn+hsb-usrx7_bz zfb*a%Z!#yuMkly&o7~L%JwG!l;LM-SIBM_$FR=yo)ft{RQ7j`h-3XxzRZB+oQ|= z>(MZ5G#&s(eMCL}W;6^NjSp;5kG~xTBR3kmerI%B{%#bEY&4LA0gm>y=+6kFUq8#Y zJP&@0l{AtY|7Oa%bwpXu=S(f|;fd#rS5fB(qweyPUgpVf0kZaLUgfo)0ixOo7Q1gerem>sXLEUz8CYp^25e0v0N)5@15bU?zg~ms30LZINM(9!Ma?$^ootvM(cJ= zj;&revvjJp-jJHc5l;OcxZMB-$6{-a1Ih;3l!)mccS@SYMC zqBq4|rP&Z3+E_jXI*bxRd`pB0QHW=Zo}Me{%#x8tW;<)}bk8{ps5gbS0=!(i7Vy$; zUCoV^Y0P?@S(1o=8KuPTp4mq8cGzp`lW~ZTs+kgZAIvb_)E#1d^UP9WBRHoD5nek~ z4`Yq#k|@F_L5-Y$00mzc%^8F!&n!9S(T7c`r#bG)-m_FEU=hG%bh(S(S@nb^24CSW zD;)56tJPEgVO!Hs*E37SR?*NZ& zT7;A^6UpxX$H=w@y;Gg@x3&1RX&y4zajL*Qtmwhd7-oD96w!9-87 z1-TrzOCK*XaIX)ylEtyuOt9!-s+9P$5LSCxdlLmVu^w}sz(qr{9}~GU)09s$UHpeB zb$>Du#YP0N0xLRFtZIevTQ;YHUV`q+x-09she?)?e;wcQ@wrlbz7%hi;tQqtBJo&H z3n;RQ9~5zkeTw!T?^Uk;H1EfG6n|oheK$fmvU^*r zwRUE$0VyO&fQK1Fr!=}osCJ>csw+FGYmG(ryUc^`L;q#0_AJUBqy=o-uYmZV3v|xv z`2L9l2PgI$O{Cknybt*YzX1Qf`+S|JoZUS7`+WMVeVoX9X#KZ5#@_3{Iu&}^P3%!? z{;Ci!r~mlhJkChN z$`7CYDGR^*p%WVZ+6R7iuZ8#T{<$Y8{@!2xNee&wC3inw@sEA{tcSn#?=0VY|HXf_ z@azwHIRCD9TfFvxU)R;Sws!K<7SGCkpSSaxtNzydA;R51{>wJSK0AH?HJ0y}e%<2F zIQ=4vU-fr?X7MZ0eSOLwjM9DWx)%N1Dg-)6l)c=HdKfBk30h_aJcHU-5n^iq$AF-J zp|RS&&kk{x~dURhlaf_OneFDcb}*7)eL9qR!D$Kjjnf;6!t zgv6`~^Xh|hOB1Wfz6Y`PlG8GHv9Xp#b9LN-6_Bbk#18)KL$0GH**49YSdE2Q7MvF! z^ic6jZ%s^XeKX$XD*wo)Sc04D-&A1qe3V!_$2x0J_lu=Alm?=A0t^>^WR=|KMf>D< zrH;MYx3N3_3m%1UNa4Rs;kT#oJ5u-n;f^)CO06&*h*$lw%jUj;BkvGx-OZBT>zLLa zGb(|+fw6ToYea#Chxa=2Tua&?A*7nM(s3`jBW@R>HEN>(Rg=;Za2n>l-3ZONMR3dz zh_&AUj%erHxvtor^DnSJ-9=vcpMM%*#N}&F@wfe<>li(QiJ1Q`A9nfp-=*)7UcPhk z-(|a6@xd|KHg2+|&g~C>)OD`@CFMxoIpW{NZ}m^am-#IO;|oz2oH8tH)PyYU{@7S; zj&iQ$kseXRpTlqIYesxGzn{SqegDO!zTaKy%WF#CpPjyUxtO_hpKl6vV1AZ52zkoH zs?#Y^+&&N)U4#!W$>`fSl8$QQlhv>$F}`IcjJRpEAvAQl(@57c0ozUPyB+OQQTJu) z!atXn4t6e^tFB>|LAkjua(^&Fzw;XSDDrx$8@IFW2E1s0X=;?qChH|(u+9p~mdP@z z?pfT7oI(NxgNqG}Jm(qr3o{y;E7)Yh@*vq8tf(xJ*rR?aOkWs6ye9!XBl~BSLr}!+ zmKrx8y{2e{FyKm%9`P2-9*kK8jM63mvuH)UT>;I?#_n(cQ8ol%lC^4jg%e!3ey*my z3GZ7NWhSb!jBrqo^44JSnk1mS9ogkGxjZu6WOO+xQI=99 zVIM(_xx0u^B;q)5-MJ;Y%%k59=R2z)WrlBHut(IR`Ls_-%xSfCSsiMM6Hb&d62WY6 zQ1Z=n8Qy+{d=xl|sVyB~d!E0eb5vXP-TZB>%~|xir2 z_sN`GebIh$w8WQ_E`$8tO?q80$};0Ym7#h)BU88#8BBV$pilO2tSlMHok+1cHWoDN zEX$Lg_{1k3LGcyeUUvnK=L*QZyLX2zA{0S-6B#>vqTShd&!K&38`#$}bGYM(S&p0H za&M1d+A^ezQ)~1}?fE$ExkR|Io>~CWiq*rJ?6jgBSpWhfMtIT4IP0_GYy%-Td6&^% z0evj}x?L0t$@R9otwc%a3(Y$<(FvXuc({Ebjd2@Nr;;~p2=<)9nqGENPt?M?yrDbf3#!5%gj+?5(x|`)GJm$<&L6f;X6KHo&bv5ATB5o1^^#>dqpnWN235sb|8I5aPjReLGRd9&5+@+S2n zc}nx1L&6y7qPF?ImE>7664k~U*7RTsL#hfAl^W!I9{E#YX*Q+a$jsw2|2R>cjF!gA zyUk`|(9SfvLxupdt;y5}Ph2%$Z?B0q%dSgczV!OF%1x39(X3O2X#Qao3NrFx!|qT< z&PgDg*)Lfo)Sl$#&l=5Yl8LRpWGF_kIWJjg8npJ zuao8m1H5r{U5j1qzst6UhrNx|TWGU^I0#%xaz3_`+7181@5DX=X%Q!aer8p~TCv6}#**{lGA9F$k=bR#PI^_ze zHVuYYI*by^@&f~fh(lF^??m9dslWuyZEqJ-8+)T@moQQrtweUzK{{4&|K%F?S_kZa ztuS?%T6I>0l_DHh_|dd(Eu+C?Q%TAs34W;_ED~GF`Fdv%QkF1ocqS!IWyk9jElDU8 z%K;bB?8xYzGpr7lCkL0LiZj%qm?_1g*ir$;g4AGkeVmh~6AgE8BIG+M0g1chXFQUo zhMhNW3r6J+d^x(wg@d9evb*tba7IZ+A{}p0c1HDTH?!Iz2&rkBiKfd@iOFt&NwaYn z*01VE8J60#C=gNfquBQHR98)G)l@DmlEjtmkhR+TJ~dW*33a;a&s;|0d4#)&ALc$U zVq=7HzyCb%%C+>Gx%iL}J9ggM8gP{VenM#w2b>54-e2Y61%V#4-xVd*L`Puz4Jnsy z-Gc84j@WYZ`u&$6TA!2w);>)gUooPNk|*fjiLya1j&i+LYku0>dYMpn-)L)u(dN(b zEq?zvza`I6oV+%%W7XO+HB7kEL8IXEF!p(AewLC6Keye%PQ_B%0fqNsbqo{OvXX7emoL_sF*zcCZ2M>O@BHvfB5>S# zY?a0gEf7H~5AS@6+zGy&BRij!i+EA)uc`)#Yh5_-a!o0m*7-J89NGD@ePwQWZs#G| z(kUI@`I^LrDFSS(TQL-Aoy}BOIWFdfpF zA2`ZW?GqDe8wYy6eO0G={=0Ab#SRLd&#yA)tIqd){<(IuVk}Z6v*X?xmhqB)6u7xF zBHurSgCg}(-G@|5VOuyvu`$CiiF_jjnmS$eH*U}W9N}|_2k!6z_!(bHJi_Q7*?6h0 zBYr)AAsTMr3z0X%fFT*f5{wa8L#fiGjH!bjCIV4{O}+N~t<%n<&Jjl4g*)Z&hysAB zc~vL zzi_9`yRvPCDO9LgF*79T0uwk+rb7N=lY12tEShIr;!#tqva;p7s}+#Hc$VsHL+UE& zh7S*3KTEBuIF1H^=tmob#7lks52&DMi{W=bEvdH2F{pLft70_ ze{ReS*>Wl~=C_gl?!^5u|AA;6Jw@Q9!)L3z+qO;hA}Q*+e&ac#tB^s&IYqZnr15?2 zf+R1uxu5}MnUk_9c^WVLr?J{MFb=xYN#`t=R=QG>lc+_STlju+MHB1mL0_T^U3{y0w9>nQ3HtO|tT&7pL@T1m+U&I_s)A@8`+MVkb{d7JIp` zc9E(Cg#xc1t>%|Q;SxVS+V?&DmK^m!245}Ce8wkQw?03gK-5kELpbjx!m9|s6CStZd@s+Nc)pM4`+5E~&kykY8=fEJ`5~Sk=J^qxALaQmo;UOS zIL}Y;{3Op?cz%lKr+I#c=dCQ5BkS5yEH5|FyaNA5QsWXAe2xh?nJq$@&HTdrX2Z+7^ttd3P2sLwJ{w6yA-I z6<9%y`n;(6^G;y3`KD}a$u+T|HUIRdxMY~~@e6!Y{A%87e*Q`N9`p4LWP(%NTVLFF z{r>A0Z^9^fW1;cF{fh^iHyyfhsd3}Mn_4$6-gxjujr~hE9Bkfj)1m$Q7|kxM#C=q` z0@u7qQbK4w>Ko^s_kP4#Uc4~eM~8s=+qlC%2W`YrV% zQ)j1+OwYdZ3sIj{M6yIk`yh3Z3{;ms5yN}1F4DK1!0?g04ZrxsAd<^V5k+G*@_%E> zAMtM<3J<~8q;LzgW^dgik?(zv_kB6yrx+yNg(Lp$DZagWS}RlCsca6;k1^4z+biED z%dMq#{#&iT|$;$6=XlSi&SL$}Ko(8tQKUbGI=7H++1sUhYJ#D!R)mXplal1?= z>!pm%?UWbs&uh--;yn+p&kEi68SO0A_vmV(c#!)t~?e>8~hi>en`gLo8 z4sYS)D~JFhm(p;_#P;gfg9U)ba9Y4{PN=te6-(wYYX3n0X)lu>ftM4e6_d?@xtIen zsavaDSLWOU36?yY27V9YaxzkJQ=!}+XC2>3_!*w- zc;YV^J`=+nlx%ThnX|+v7{YFClRYq@>;{sQ_q371l;ENi<^a&Qi_?B_r0T%j`%8)GF3Cb-!9z^wYQmk7-Cl@ zfSdXZfigP91uf%~)i`7V?cS>I@N+}3l^iNj!l0-t%6<={F+Xwj6TKfFM`2nINziYG z!KlSI$rEOEnNQNk66dt?B-+&Mi1o1J!km=*dr#R_nh~pMdq0YDRIjI8$zD^Nwj{MN3x}bWrYbkpJIdu?tKDE5NQ$2` zNV*kHOK^mz`53>C@-@bv_`x^-`8(fO7xe%ufKZ4t<1e|o3;&1F^!gY-$-@@m@g2RmMt#1@PCiD!3tS)WY(wsUhYS;NRpzIUav-oMjj ztt9i^xw3YDskiGFQd!A}x6AhX9-R3t%})O$K6XAFpXO|T?^wTteeYadKbYzod)JPY z#dTPw{PKRmUiM|)FQK!wV`V{MYakDvFYCcn*0V}$=u1j#>{u!Om{Ruk^C86QkA#7J-AkIdmADOM z3oWy-#^d#yT0he@XGK%%7VKDWWi8GvzuLKHdSAUDjoprwmYJo^mxf>SRNga7bLE!O zT)AFo>L zpyKx3Ck#jz$;^JE-@;za<=yU>Eu;C^CG^@i1Mg+@RqQEmPBw@n}AU;BCI`C85dGJ4JDYqWGbU5HWXk<0;C_i^&f+w3L2T z282zI6Y`a)3us9>dAJ}oQ=lLg3gK#|(Jz8MRdo3HM_;we+Sml=7mp;upyz%iou2V= zOa2|N`RZM!mmPT`jJ#h<-jfn{3VW1=s>&I;h~3S(#`@evHskt9;O$j^^H=A2EDu|V z{Y41NC97k(JlX5pPI+Dp*@y$3taAsZ+=C8SXLfckV!xwV~be|eG{0*0~)esPHY=yaV8$Uc9-*>hQOV^Vz~X8_`|@yaYR47 zeA}=GXX0nKfPLGxVV7qjw83YOUOy+df<0n3z75znjp&n8z#b;&T9_o2Y7~VOlAPPe zAuW5-NijnNGdBg;*IZ9rq2d%AD&Sfw!GPbYV`t;}oCtz3{FI zfHY#YtqH%;5Mp9Rmxp}P5uKR$ycLy6)hOgmsj+OaX5ET5o^f1L_LL=Gbnh7EDb4eY z>40l;Es92KYMqWnB+fu3>cRAcFxWwzU0bJdV+6v}7V5xE{^jTHGJ6KGmqr+Ss_3Uf ztHU`U@iaMmkVT$Vmrn-02?0~9Kl~{Sv4a4)GC{3&^m)6?pFu?jmPLY#om4`92IPfP zSLZM-XVni13KzPeN=&$rz&kNPuVwu4Z)Z=b(rNL$AsEnZrXdcA+YE;rrnnl-7$Oi{ ztQwzsU%Sg}$iJIV{JT#Q?i#T_-pn|c>RF|_THCwZamci2&2C8;V{)-HAM)8@vqnR?nyi@!l#aac|9;I z=6Iz-Q`DoyoRWNLRX%BS4^w>AS)o;4ta!|%AzMOxF6<^n2<>LA_NTN{Jca192&2xT ziS=jOxoxA7ai>ujidu@8w1QE82;D*qKu2r-(|Yi1smPffNF0e?Q^J4+5YyB zF=TN7nl{3ausII~GKKMfyDP|D8V2ye`NDS+{}SCgP?n(%pln$i^zp z=%!q(E7_V`fC*%li7;ej)Tnl{z#bwTnGq+3lMd*OZ>((x9NXh1#6>U_XavoUJSJZSBV4yoP3V&s-kWcbm@soHESq(Hx>s%FINT!j}GoH8=>&5GZ}D>T(b; zQJ>00P`m(H8SKLnIdfG6X{^pMFyJ7Z>dA}>fFvLi!f&YgU}I~YivU>phMbQwv!QG^ zq|)a_PSj^)*RZL{uK8z{J-}*`sVlE&`J#OfgUCHuGmGLe0&0fJE}F3y`Oj_LySR*0 zkXe3`i@!z8CK5p=XrgYj!IbW#ibR#5h~VKAgs1@;1K~;%Zr!?ykiYFa&fGcf4pnES zjvu2P^}M*2+KLO=%{AI35*dSQjAv7i5#lBUEn9}!`lKKU;BY}y9b6h`x>-NbxeSAG z@nX0|rKeII8A2q@I$at1p(rGmkb_iv0FkVbJ*0W`h%}Kw_>5}TQf8GF#=PdoycM!gy31I^pw%Ph!pyW%3cgv)V80s|;xlyl36wNi-Sk4V5-srg3y3bt*6C_%8Pc^}Q_lNM zj?P23s&x;O(H*&vd`9jMUwZ9dQLh(s25ccam+{+vKAqK^C?Rm$V>KNi(pAN zPjq_gE<=~PozzqJaMH{0-R-U!iF{u=O0zF+{PAqJa}fj$y3XOvvz_Hj4SYVyFV3>l z&(6E(Z;$#1KTx_ncBW0^fm3^cZEe8}Zn7Pkw6IPMt$nA3CE|JEzRoeD6I`N)LNK); zw9wbs)Mc@8ip(9pu_bDk%d0Vp@Pt!o|8Su*-Y`Wwq3@05y%?ZxLL>kItV+?HqbF9{Bp8j)5g z?bHcDB?Tk(hzMH(Fi{^;g~>XWx)*U^Jvo`WZE~`*vi1I`rmjmquyv-mI}2rt&N|(NM^no}I63Uq4hkr1KG+7T?(v-oTf;06 z<}k-g+S!AGqZ+Fu`f-EPbC#cX&7YM-YL7YDZ>MJO{N1)=`MF1n40x)S<=5dJ{$*2p z1;1mwQY8J&TaH&ryIET&q@x<@Z}vD^qsmBO2$$7tdr`NTsLWS+j-}3c(&30%%Jq}$ z*uJzr#Yt*TmeQ1hu5bN~V5{3)wyB&%a+zwBCSTk>eQlpHnno09Ya>k|A$O@C!QPtK z&oGcQn}72&T|m=Ku`i(?N3Q8j=J^JTvrSXM-AAWmI8o3_4<{klGZf!8PTPxMG#r?rM-%Q17NP zvU&kF3vS{GR2NdSVqfSr@^vD7Ys!yLXNHL9~9Rxhr+3ZoIS; zPH%0@lOTD2T-mFU(y)*Dp7f&n$#CC{_a+njPDd75gtw5tvmj%H6rI&~5Rwg*EQLtx zBvr6gH=0ILbhiV6gTN5?4jlmh!0t|rV765(chG79qx3=0j?in6EX|s5;47aPw;&)c1}Vg~AmrbnrQ)_FFW5|RO=bhk(^@}9s3Ym=%>eV8!V zA{KV9I?(7?)mO4_Pt;GGJ9U;(VG+qzZhw%pw(><-y3qbf$+UZhd{I`H^QI^iL#E?V z!@m8bEKFvoOc;mVO%0pw2x5IuoK0CxPMf^RP>GdD5u zv3NG?%rw$Md%Ez?9QR0>cEa;BwS znMDs^6JIe~8>YMF^P+!m>^te`siTCPsgKhho6LU9>#lF;gWY~XqJ*s*+-^V8UE8ydYT_z@QWciek%v>U7>NNA=jxMVvPRZPd@-ukVbsT?fzzSd3P zOSK1%?5f=c%xHsTU!F2qVJdzWOJQW)~HOei`LT~ip+@0DNaQbJE zA5WuzME&OzjQ(&!Dm0Stj3Il2@2C9gG57)MKN~$~#d*Km^zUIZg`-306nH%>|6VXp z%J0uQ>fdVGB_!+P$3MpP!MQ+}?K7<6e7uJgn%_2i6Ye(xbxZk;m|NJ?-DS5nyjFK_ z{dLdV4K6sh=XLeoo{4sEu5)Skp6G{bDMNE{unh3BIhzrfNkD*1ms>@1b6`H@Jqd1< z+J3uhi?y0}F5)zL<@WuzAGrPC!?i1*%Z?GOJ7~Z`16{u;D+0CJuH(CErwBj681k?1 zm(v%OLMRtUZagAk3^s5DF6AxBpaez{cJFz__3S}##MDN(>w8zK=MO#E$I*l;wrNx3 zcc78yZGA%RHKEnR+5eQKviUlw8n~4RlX*D>Vm;TuLIJ>_5DW zCm+}N57vL%{)|+|@#X@a77repIAD{^s;%pk%s zSG?;EH4N8V!QV>cx=GVTFMu!M=8`&#~6Z$0j% zM7{{w+FNUQ6NJhYuNLr829IGKv~IoI*-SMS9lT}K@YeRdQ~vyI+p(u%;~f?O4$o5i zQ;oITB=7S3%uU&Jf+^p(6OpJoE|4)?SN=ifrQ|;Tjz|2#h-;J2$G@f&e`<=KYHTi; zTpdG?DFim5vKQB&L(ZOnl*>uJ(K>doNJ&tC&Y2exuc;42FEoQ1%bGLD4?qBekAx%X zC3$awUz9Y3P9XZ*R~lkI;*8hkAQFG>jykamr_^!bFmwTC#-W{^~c9_vV-ARC_+)uSNqi3Iwwp$Q~(-Jt`0QvAad%6Rfp%bx-%av50 zS8*_sB(YPcSI_ra$Ge^TTC3+*jRZ;_dCfBG2brI;louvwZj640-wZ>oo~kSi-2FC$ zWrK^*%xNfCy_j9SH9Viwi}he$GHDC1)gO>~Gp{{92)dZqB8Nb6yxkSi&{$ zG|_&i-=sXc0YFzUCSfkE?h3Qed5vDNxG85^P7$!oLXiCeC!&a#DM7g?PxY)%AKlCK z(qQMl*+NfO#5Sae+@~hQ5;KcbkKq~YF!;ObpB1KwU1+q?r8{xlItn$-x;srB_g|#T z))l}2TUeEAOq(cB*VVchA_zO&bYynJi7*rSNt@=Q-CM7u=6FYg8qqYuU~Hx$A>sFk z31PD!x+q&quobLXZt^~{+Q(sD=x~PD3!<}Fwa5T?@Mb{ zjuWYSn9s?^@`O+7Y;Ul(tR$c2Afgx6FZvp>oswnI+gw@bEPGwW@J}Rn-#AXnWx)~d zw9{-)?x}-oGh{5288DhrxG6Kl%4jMaf*Q(%kb)r-2S;S0Gv%b7Pru4laq67Q!Xz27X(R?(&DpeZK>XLH%L~r&BW~&Aj85_NdzK@cEnkz> zw@>@&Z(;W8Ol~!g3mZw`V}8x_PlF@w;x9J5C_3iKkxY5CU#CcGrOg<_F)FvQZZydg z-IcX;`3xgV#zK;Tu;l4NDy^IeT-LDRxqouf*!-tAmgD3y;A!QZ^NrD7A?;!vVUcOG zK(o#vYC9+A$;Bp~%j5MdyPc$J@Lkv46z`M`_3*~#v3pyKm^0|C`el*w4V79^-B=Pe7kU&Ymb^ zNv`(22FbpegDq=3b(HK z%muNexeZEXQI$=#%cqx2bIvVbp*|l2mfLs&7jdEvz}joVKm{(5*5`UyfKq(1fn+f< zl^`y74V#mCdja0ZftT*9sk@{axB}ZnbEw!CpRlyvxB2@13GY>w_en9&+e`iVNz(pT zo_WSYWBuRw{oi>eO^-IT{3a1xX+XQ3+}X?HYI^~CLPnH1a;M+xWrIrh$GA^UQD^CK zM*Mjx&Yob@6KU@x-jKKqNyZGkMeH4C5t$oQp^6PDA_MCKlqI{-0rRK%En0zwzi4mu zT2oaaujqCn(X}L>vU^WI?>LJ>^j7g1F!&{1FeC6V&Bf*IEG}*^ADTvI*e)?3>h+tC ztJR(j?86)_$bT7=5~2|s%sr+<3Em9v&ty#CVStQY#wFy1iL703B){kt0q+8F*@cSu zeChii5wGXI%YU`#LXloHmaioKh1jOh{4%1{$yfPZ^Dihz2+!x!9}&=%bR)}zw@#?CEj)0>YlRR_*RbCS3E1J|TVvUEakqan z2Pe8~)ZH8sr{oO7Drnvwq-s~trQce&K0(`;LL`Xo5|~%7H(}5gyN}EzvJ%p--12=G zWzieT>B-=T<_Fs0-G4ztdTWjv-Qi<+}CelxL87^ngAvsU{fMprZ~pzeG7AE5Eqs? zz&PGOemv;scEVBsR~`y9NbydUNQBQuH`n`*jHVaRa}wi;I3j~|LHpUU;!0NT68&Zq z+6;K97rbL-4VZ5`+eN9f0~gn=LpHiA{)ql<^4GaO z`Wka`fw_1G6H@zo{tr4IQYOd_WHcjud?U}p(TqK7?zy1-y3;|c*DoC(;#Ty+KIb)a zE*}_Wd|fJ|zfPDBNL85a3kr^O-&|1_)hoVBmr!-xu}+2fF;u4_O`MogF`(bhe%7E4 z_wrDk8hAP9|Ln0dmq37pH^EJrGdVr8{+$+}35vPJR!O6`?B~X+q!~m{bGk}|64R~y zBj?FK@hJR!3TyDL6#t?Welg)=cpjVLk4vF=a3$GHG-T#js~ZU7ZEs>eBHf$Rcm3{F zdzmItIQ{nLce_2vXV9LnAkK7VA|ot4BUuRDWsvziE~EiP2BYiEw$~Ej@HR<0I_=X% zJ|70*Hp=g$ajXNr2SM2R^g@?H1Vg(jqURE}xvj;WIK&Ypy)K%^{BDTWz0N9Pnio5J zaPSb4V1|e!5eAWwMbDA72AGucKQF4RQ8x?_7cIL%!hn`opVAuX&7H?WxC`;Z3mb?* zqDDYPoVF$DJp(B?pgm@5QjDDT3WqoH@SRJ@W@okX$|5Fc#R5V_Io1ufC^0K2m=~az z?Ntg9S%%iRRMlR6pl*WAbs|YOlxlh^k&ifCxT0EDc;(ntL{NHEeOfzl&gqtAcj^)V z6Zy@sOc?cQ6?;D|dsx1_XUPu8HtaSLki*ZqLlmVFax?Qk32ia-HV)i7!0jaDPlt*w ztttSfH^Iy`JtIj^Su=Rcb>8T&s;UX-ScSc)3rHJ=z*{!(-WD3lj85$nU|)f~<4B>X z+KDJz?jSXz?{D54qOK7HCnw~{phvi`?I_ugd!f_)ybW{EwIuh4gbnh-@UdW8wb$^z zdYNDm+6Q*%S?kNJ7X2`~#iK|pWWV|1rGFlJ;p-_^c22n;&bHV1mncE$7o_P_##K}fv+JKB;^TVxa2^~4R>+ZC1P1ftXS0#M4Tz~Ff*7Br+6}nG)jhpr7?!h!l`tGC%Ww5s$6wlmi zh(-H(vbVQVw(yP|SbL;H0u+h8w)?3O(5j*TG?^-d*65;(fk^yRl@ww6c%4myxY(q2IA8 zMjaGH+nb0UbyCR@j#KE5s5zSE=4{6}hl}fI3(5F?A{EZSYD+&)%fQ=gXL?nviC!xS zP$|J_YBQ;8s@+oQgH)gQP#5))ZCOi@g)?qYPAJay-hu*Ky5+zaGl}0L3Mhb(M7$v(oLyVoX$16bvvw4WPF^y>RFo)8 zg`L_(D4j`Ud%C~S2%#}n&!#g*1SI$ul`2%fz8m_29rRfxzz&>T19~9DUzt&-)Co|` zn%GkdE!_dQL`oS%h|&xc9ym1fEu)tAr5R69u{dGCQ2YXuy69*dQbTrV70TJ`V&7bT zv+t>)TtB3AXiHj_5`1d;!CKL6u9s-y!-*zB`&|4Vsliaa+;HJ&roLl1Zo}KvDnzFO zDGlU{DVgNDMSV%Q0V;8t%HCmp4j#uh7i)UfrqI0C`Igz2%qJyM##9D=AkD2`Zt47I z8mzGufnU;B5 zVk{WmyY!bC77~km@sgnazwDh0e56@b;J*=&5fNSK)&WMS83yQvNm7qgrIP7sNWZ2t z(=R&do`zva>hV>Q=_Hk@O1e8dmO(*LLBRzXK@^o;U$~+o;))8cC_X@T(OrBY0`9Ut zQBV+Z-TyiFp6^wUPEYrA``e$HslN5qckj9Hd(ZoGILWwC zI`LVctug7o&~dUR^=1W8&|^S1j;KxLc8TF8Q?|~WaRRhNg=DvbFXw>Xui7qu_0S%h zT{*b5R}d5yR6z#A-iu6qdF@>LY&d$L?z)&WFF98rPogK>i*F&~{M%7O^Og@p{MA!1{CZul{Ck!6zbSTk& zP_R?$OdVKMc;0Uf=XcpZoK%LtxCDxDo+BW6g5MbqG?#ha=bw%5@iXL2<~P67R=(o% zKLDRbe00AnlmB@c_;+OTzde)R{PY`qi7A+@-+U=seQ)*U?fF+T@LrTDzuP}wF&f0{ z;VHr4ufeg+HBJ=Fso}8i$2xFR1nb<9%#;uc!T5&rbK`ecWb>L)?DNnhKBEI?V^Z{e z_}qf?TeFnu^J?b3%)gA`JK(p5q~GM9t^8`{dBHzh{@3|ucNfa8XgVBBa3UDXa_c$n zvRAFRFLaK_5*2G3*1)$@PUQGjUi9vTE|M!# zFcA&&IRwC8QhryW{HJ~W=ryc$VJpb}q8LmJh-;b41BWKJo^$@>tnNSeWoPxQ6z(5q zX?*KDQj;-VqMXPet=tCXgx`Gvb|mZ^Su6?96RxheQbx`cD|6b{Wp*ZJc9~PmSXwPa zK!oYbx^<{NFn$+Ug#;|&+sl|4>{s~qV5GAlszhSMKf77?Tv^rqfN#)lA4LFh68!-r zL$wa1oBnV}e9d-!v*y$`!#^lG<-gx)0;uTA9dH@eU(u+1Z-BJ4p$r1iv9NQc&Ud;MP&KRJF^?h_BZq1XLMieEd&jib_#5fe2iLIFe}q`6z^f9_`F zXE*y6P_2=NPV6ldnqYY_pp6Eh`HFU40Qs76w_45hUAnb~k(64-I{S71hO3@hqE@Jn zoVA>yzAkbseBnV&B1TDc>3eVv2UlbzqOs(5^)#Au!Q=H$X;YGpk!&7{+4MqB3R)8_ zDsj&mTYAa#KrqX;VosLPW&rnKQWSY-TRN2o@X7WjPFlPoFZ8|Re&%+qET0V#X4M!p zF@0RY?}uz~Px89`0pTb3uV6Jm1}KDyt_$!|ztna0K^M5jc$0UBP`c3=!al9}&I#`% zn&^F^P3u{wif;`70Q#irsHRw|Zk=VH_k}vDTX7p;dmykr60^%tc+|`P7@#T&78e-Jc3#F>ONwwjYD-=6aETmSdy? ztf!(ItH|mdqR!bnuPHA|7-0OsvT`=tGEy^R$5}9l`8|V)uka-0l>hu%LPg0mtni>~)fi`dN>&W(DSTPu%Te4xBwW_CoNj zFWV8Eq+c&WZZEcomYN)2F8_2d?xc-=;sJNfsnn@RL|RbB6YT83$Tm1 znb(k>=vO~3B#9noMkP6FnP?V4@Z%3SzP|O#QtRK7=wIY_HWSa{^sJodQ>MI}M(t26xY;!R<3rLGW(s5Ii+=+}~@~RGSA&Z9aZ^NZWs%cYXJbKb%mp z6o>Pu@a2LJyu#7O2H#SvM`E=0g_Yd*sa=PC`zv<@BSYHvTSMM`Xvn)i=G}n()2C-a z@K)M^3i7};{qe!@2KMeVz#JO_^G|taym)X!MUpam0$&CROS;TU?kNkFaWZwGb`7fR zpR7yI3=k+Kb!949Rm6~a@5uZNe8)SMYd4!)cWXMgko=vl@`tmzlShI@)AC5co$+-# zq^vui`V^g3WTAgace$n;>B3s1^ZQHKV+B@;%jsKbKiZ>Gg3z37nHI>tufrAThZV@E z+o1UBV$6rD9nKH*4=#;GR$v)@gPfyXK?fonz;0Sc;5&dpVEc2Pb6I?)7>~!pGc9WN z_^ik%H57)>`q9bjyWu3<@9{1ABW zis6|iT|&^*i#Vq1_Eif-mF-zPa2}p+e}@>xgA(lcwjIIoA?^El+BY2|xmGf{0CKMa zhV=2xq{5f8F|*Xh?w5fTUBbxV44Cdxx6@QCsvHW0ea7x`URayK?*e}q4)r$RA8Y$L z5Cou41>@hoBghSD-NtWIFp^;O`j%|BXZY z8siqZSMLaJ8Up7n7wfMFwFI17hQN6fa1uC*5LR$m)x11=uB3OnoWt%gJ$1VG%}Gb; zW}+|5Ia(*Eu5waVN zh>D)w?sOMMbe?at=bK7Lo(>!EF3jUEB);ez*Ko3~matAx+t`|~HET$w#5|Tb9n0eN zcWNs8@?vruGrb)d&zGvL;zY9?j)%2kSRD&n6NRu@9Rs|4Mtl{{0>%3yuqGfV^ZZ_C zKj@pQs?t-rd%x4&0r!)N?wXwJVuG8>%kQt^z1WdizJ}N;&5NK{!O8=(^;n$;%t}0rn&NR0{?>-mTE})i0&IfJh-OSC4Q0Jjb%fVT_!4) zr!i6RydiEqZ$l9&`HKMq{3G-oJIz_Nsx}B&((W8V!{LB4b$}7FAMQB`4w_f=%z(`& zK)d|I&z28!=)u*fW{Acz){?5Shhq@rP~EQn;~10%Ihs!hc>ZTztriK{5Zk&O5|XJ>8BMfd8Qc2p0^lolet3+4txh}lj$*B9q{Htb@FvJ9u=vyESLY+yKd9cA1bqG}S=0Mtf8x$%zoqD+D zBTyMW8^o$d9qJpeS>p|OcD#GxBobDZ`nN2vs{%;?fz3>DT(n%^gCK=Oa#jNwRvMct z!p(9dPjE3K5VA;zR=v87<#iz!r2Y0L=328FBYhR^y>QmNC_(t^(m9c1q06M|UCNGI zMdi{wU5d0p(S9**5-Fue8|0!@vnNW#(o@AnT{gcLIgsF=iXaBx*QhToG`)2Xh9OK4 z+#@zd!|Mi$o}DNXAxIEw06%3qu*^21JLGgr;yy>@O=8`;B->f0nbw4BjIB(I7Gbxw5r%!Ec&)v5)j z9_5!Zy{4g9qp=S0u*o3fFqgX(-ytiq=2%Vqj~Cn8+9IzM^;2&+bYzcj*1~By_!{?Q<%RW1yA4Ct|)9x@IUcOLM#-;DrzU{d33~EWNP%>%tR$ z)lD~izobjM&x^@duw3oSZM|w|nwo&?`_iSN|5D7G8-|GUaryS_umQ$Y zIaPM`Ji^)zwm5=ss7?Eg-{Wkf%Z!)sG;U>WkMMD{q4ovqyWI5VNwFSdfjJeW?&~R+ zBftD5X0@;V@V0FkYxwRS;dD<->U*h2^xwXb&n$JqyGOwRili{$@e3}R+k^X|)3Zui+Y?FgPm{jVhz z`r?O3WsNE3Z))~}@k3Ow))6qvgL~1wsD-tm#uvx-BZ%EjV{B!)&LldtQdEm{^UImL zk;7ajc=ns!nw}%&DC}vwb&mT;%p))gR!1{qXkCg`Y;!6%h6q^>6ryRX(;4r&1K<~c zDQD&bq;i0ZD>*J0->^qOou_h89;(Re9HJzi-Izg1dAJ`Z#RY2c7o>82 z{}ZX`VmX{yRcJ)kO>lWUb=+h#2Egxi>vB+en>PB{gm`bTX##TytELsa2-1ANX4GrP_;|Zc2HusCa{B|dLseY_E$d z0cZX;{l9{Yk#m*NN6kxjy^vJ|OhCGU8ZZb1r@p$zW#dMAf8x|1giN9iNKJ}km~F~} z*LIl~y}$)`5x)H`JJeo$C!0Wcl~=Y8Yl!tnK(SOO(fPVqUqZ(b)R4`&{(UZ=j5gyDz@kctw(mzFO$Q{dTVns4AJX^gy~yQ z`QN<-k2`tBkdhwp@E3kB1mEeXzx`_OkG%B45)K^NJnDSI;P&R~{UzoX5eHHssx1L*9v>a<>;UYg5-&vX?>d8QLc}xAo6b>*w){!m^%13;w6!uucFg-fyjK z9J@nBc)_cv@6I7@e}MW@GCaC21h>EI{0Z;2t^Y0f0x(4n!p6Z;8;@@WW>%)R4Y0wH zA9lJ<2G3H1D}I5tIX0P1GJK5QM!hG8^yf8~Fh-e*gByQjM=&u2_UkWgtg_&P3&0n7 zx{Z~kHfFB_e&&1uEp~E3Hz$3U*wG$j&f_8yoxS&EAEd=Zh`pH|pTDO9A&Un|457P! z)Zqg{hs)o7m7^uS-1b)Fn@rOCu1|}}w;#2gxvM223?BVsj)u2BJ&|XT5nchhKuyiY zbf)2xLduP-*R}+wOt3V9S5e<0^*sPmBsNk5x421i);HY^mE4)IXrN@9Hu;jaZJ_x|%b3XH4 z{9GsBi@)gP^G{@+<^AQ$8#JJm$`)SzQw|6I2yGSKt@K0wr0w!Yb^6zPaC_sYExk1t zx#%|Qqp*8N3SpyBDNar{>yu%lS}cuqaq_f+gkz*IS{=15pYyVd?blsv!Mj|( zK;3yC56Us*U-HvCf;oDY@$!F1(4t##`Cq0^Y&huR1S!5My-_JNx6OY}w zy|;_mmX&`o^Dlad4|NWs*l8{%nTU#X9#8ztj^G$@UxDmV^ne~Je5T5~f{$cU2zy{P zQ_DN3L&i*ScJ0F{`rI8`=@!Q>L2hc2!j4npjyw^=OYY#-d~pOEK%(#@T@s@^|IQu3 zebjqDA6b)$^>_v9t`T-m*@}HDe=T*NrOpjs_oc`zZ~ED7$ShGVSzhfrdh+r*wyLDV zm;=}&eNDjbD+JtzV89{ItLhtCVqGP+Gg|$czou-%~eHi=p_Qhwm?n18&;7=kZ$ZzQasMn$zR!+bT(SiduqY z*0acZAMks@a%OrbS%W(`>kjjgbjGK5`t&ZJ9`Wf>QZFlx7neCr^e+-58&21iWV0Ms zY-K0v=tCAlgI{9wv-dMzFJ!Fhe7>3wnmZTc~q4>m@U1@LNBj$&0=xw+rDkvNQFt^G-LOjRqC&^n^FrCDb;QD+d*rONwVZ(RIT zA4OG!od?aQkBX-bEE8x|s`hPYZ0#eam-A(!ybsNF1f9qOtM?zhzi}8vs8lQN3b$hQ zOwBywoYX;&uS-{m&*D6rcwJ9FK+1EG*e`ceIqoewXMNC9a6jCaD2qVdlB_s`;}e^8 zE+`SkY9%Ocu7*Jhdry_oSNBHd>91R`~mbkg}Q^T2gZ++cYwMDqasRWZMe znM973Qgb4yZ{A&#sZrG_*9a$#rtSMtf^DzHwaFYDK&Oehn+-SO-(`u#rt2(th3nrF z>%$V1quNw_hJP`5V zI7oiJ(mjx-*?`B3tLqqk$J*x);6V&^m3V04C3C7&wDrP_i|yH|bs4JTK2VhPK8{^% zYg;t~kIITiC(yFTJH`3a5sjT*1yX-NJMB=>*gWt2v7+e~UTCPt1JfaiJb{QF1DB90 zenMB>gSy7Of=7Sx7k31r>v-aqoSw!ksnBP!s#b(*^jr`9)y{*!&PS0;2(GAlyr%LR z-!6pq6M?u>fAlWUctVkJG*v?HRMcafGem5KM3c{1JBJ=PU z7u{8i&-Pc;EB=<TUP)Bkcr0W$T>)l z;R++P_XpnVbVlCBchMQSSoPc1uR}@3-6SJD;Vg3R+YvOW>-~J5#fOupv!#a@7q`3Y zk1j7dABM9KzU*dy)A@vh*g3<{GwWha-ZnMhw2Z~;^-x#T!AEHS8ts;KCN%0GJ)0ys z)K|?WnW0C^2DA!dYTHUSNmzq)Y?67BDmIC#bQ*GLJ(*Oogn~_?SYQ2`WVw0&z}bmj znv>Ne%IjCQ1Mi$YuOk36B1#NS>){Hqow(N2hSua-shXBSLC{Q6kSW9}C&tenaHa&l ziuyxlgC>-dJ!o(Q`B7`=_VlIahrVh%uCTT=V}RU9qNI+P&OlIMpD3vJ%c>KkURWFv z7TY3gpZi%L>kFqWpMuEJHacmG3n*!a+&QbzQ7EU%?j=3sJsGWtB9rmW~q zSs6>M>|9hIjZ5nDq(%t+=wElbqE_BggCntq`s!XdIGIr(UOn)hIiy`@q)*9>A?GCw zfp}+ZvDg%w8O^ESSkH*;9?>FwOxm?ogACf=L)#A1wnu)z`IgF&iiFzwY^nAA_Xf4q zV_R;gos-ygxg}u99r9ArA%>5%Cv&J_B(&HB0E-wtAhmZp}raF z@23~z;W&ku6j1DYeshQN%?Ied3@aKOrfh*aw|RUkEN_6tQEoo5LR_vd!~DbV8kE!; zJ|D0=XlAYg*N)i9MAHqw-Wh^d_>yY>r`6j=xLWKXE-Xi0~1 z>ep$Fk>pBvoJSEBEutJT$4PP&evcD?Qy+A9@vDDccJ^R>o@}+Q?NrDiqW1k-spgt% zr_MBEK?(x{lxJn7J9-eR19_&4E^cO|5`hcDK|)_(=2ye62vcK13uv(@8dqeAm{|1Y z&LH>@eUbCo`tqkdiyluyvGmxO%{_aSI{)DC9H5F=L4OlzLTW3WbV8(kPUdjJOOE>g z>exK40F_Mg(eUa!)#o}h6Jrrbz_yj`UV!)G7l^(vKb%MrFp>-BG_ z^O4kNZ*6%hHt8cP1KTa^er5gnnD$1MDeXmH{fZxRo>fxK_SuCtb(;sr-cF?KA^1Z3 z(x*lWMy3TO!tB?CBH6$tAO^~KE46mLi*yD%(kf~8*?GG`p`|8VT2~5j^Ov4pQSyd!n-zl$<7u_t!>{( z+cND69;B?u0F5rPGL~A|PNM7(im0cZnfe|gQPcxAxc-0a2=1oc)=o>Uy_>Wbw8oJ6 z41m-+%)J6wVmtGFq>mc{^Toi7*4}o>Vp}6h5eLCXsbep7YiFE@Qbuv>?Uo#EVX%ikT$#7i3TpP`PuVPw^pr;rB?R)D4V2RGn4L- zC8U0!rj9G%oO(zEE@(T|{=GmQw-0IG0(GQl*}j!v`vjbuhrnq8CrjH702SQw`)+?* ze=W6sH-MEv4kLOdb5eU+#J}(xI{A|=m*j8z5_hG6PEZ=D*K=)y zz>ZZyB=g$WNvNg^MC20dV6|Y!xen37xJ{8M!l!_G6>E$Y^%P^yt5tHbUm02&_A1xh zRL3PE%B$gtW^)|@2;mu_SI!B~VD1lmENUdpF1m9j>hp!@#ncp`!<_WwVxp04OLGMJ z2uSg!vz(49K%4Gjb!=Pw64^D6m`!s+DQnsbF2x57@oI#O6URQ7X5(X1CB`G0>j+}s z{fExBFOs|VLiO_3=*7HM_i4&LiLrjfAMFU9KzfpAk?Dy~7Qf0;gw;bMgdjVWWb;cN z_9HGyP>pDR7Fe-{Wg6PS)0MJ)Zh)Gg>dLo!^<2o;yV%E6H`S& zaN{34doF`#slgSx$bPfb-o0!KZ>KHdE5Yiq)an~d8(pNAAKMX(4}m+3 zMv5Bhkj1`4QYOzOQc3C3L&&6b#(s2CHiwFm`mX#wlv1{Eid5R4&kvzukOq)TskR7Bl7wPq{qB_L+)5PnZH8SBDF{|#NJFe#wk7>4=_Q&X z_HpNu=_2c$8=1a@Q6@_YBV`ZRUK&IjS#eViU2gU?*9K@CdVyTVCw}I=}Z=1Ofw;fi<wba`DQreuLQ?f9ETR-XUN~2Azyrl+5?0Jp0*zQ>V^pLR>-@3MaKmo82ZEgv> zu}1{v4;;U8nAE7$6(7wnG8WGpGL}Ls*?1YPVB=(|jn|KpH%TjG2Yx%m!rMOOXgPyz zsnxMW9VuF&eG5 z`kka(Njji!sRSXAe&0(8WZ(O(8tE{9mcG&@AD0~GkYKDJtLrsZpQsuVpHwIV;y%aD zhHg{tDi_X(L=0!;sv*wkT%2PczoYz_nr@EgZQ8$WnZg z&h@)s&+&k`G6Ctbt8e`M0=t#QW=KCV2D1y|nvD_i% zIcn$%Vi6nP-0jg5)JH*4jNw7u?4%|T5GSOg6vi( zo5rBByrZbZ=nhMWN0~O2HadmlQKvetRucZ;N(Z(z zQjVG8LrBL=&VICGPnIO{IGvI?_mi{r6i<d8&>^Dp8oycEoJq;mA`ZUB!T^>o&2XOEmpK&yawbfE<^UG*+g1+kk z@z}q0x{gNQS$Rth&MSdqiz!;6e)&dWhWd+hdv?Xcx~h6=!$+;RhtAOlSzk%It7kyA zL3rKxcRPY-1INb5QmbcK)=4s!&VWiD0M0E#;Ix60rMm`z3O)cV@%v+KvDDhM0<7$5 zA=k*ZRBL<2)Cm)JeAdN3+V0-^g&}Qt5LlwGY%)b_zopiXALs|;(l+CuVR(pam!26R zLTL~@>2o{OhSu6|srBRS^ury4y@P9e@@>G7F|o3i8jN=W<6^XQ)Vee=J)OR&)3UeB z%Op9Sc{LqjhvM;T!1*wwystMwk7p{FYiDQ6M07nF{TXX(p^s;!V~=1k`D55rw^yD; zzh3nI#gD%{%Xj(Y_}s)N>tAHMK0q$T=fWHQVVKW_j^qADUI~(dxGUgFqU{;qN%s{A zQQsA)Azt7Ed>GvRd1sr}VZ3E-YEFaF#Ye(3K)bcP5{fFN`=xtT+%CAfMttqb(Fs0F zdzWZu+qbtNX5=f

    sf1U#T_DN)})1HI)cA{R6Jt zy&>|skV%07rKZ=dT6bd}N}6ae{ud88WZqgeEWUbvU#;Dze5mXTEM|z(B8r)=N*SUq zQEt|nZj8gk0=+!PAW;a*y_H;I;+w4T33& zvfc=BCY?L*L`%JdJL-gamtbA~A!kaR^d7%Peb(A0VPZPs2*vVVv7wAXCt7I3lN~}x zkRX`nyj|cUY0al~pEi8j^l9kR7AY}%@Btzx@fsn|C1N{5>snV9i*p8{Cxm-o4b@pU z@(Y2*#4J6LO@3WY+Qw&eEhKh?tnclP)wXA~Pf!X!K{nr5MEd!*%2B?*L|-1e|H=9C zcpqy(bnNW;J^uM)|L9_y{1k_-ytn7y%sdP3pM3uv{u!Ht;~k7t)-p~(OzqxZ-81M- zwl~Bhg+yLk3!{2O_LPMCe*bLk6uaT%d+{Zfd=?o|^7%sMS>ik<-%E^3c|P?e=MzTs z`sMj$Uv&B(@66QqOFqB7|BX!kpUgZ9?<)yUbT{M~I|m7*D83c^Ec^Ig=2v2-$x2?v z3a{fmrudPQ68@JX+z&3>2J($o+XKQ61|>JP@K*@});+Wwt~7n5JJ}bVT1PUQYYSnr z6FTkA&E}$dkLvP(2|G6AB1_Q1-RPx{b_a|31j3AyVXaFh>@V(GgX42YyWPYI!|@hP zBuLcx=MoT%X5eIw32tw8IXUq^Abyq5<~;|{fb`UJH`*J zZ{TUMt7PfL=hok`ZrHL;7U#o&VHvb*UD2G~h!h-LFI`fjxO#{R->PWfA!m`sEc1{`)B8lFp%PvWtiUuyG=EI<%E))YobAz0$_ z1{v-?erDv@@wtOjIq`l#lsbtWBre2c{Q0^OE+TD#LWfa_q^V1$(cDp7^wBA)12&$Q zzF6h7!eNg96Z?5bVM-h9o}>xO2-Ywpq|roti(5k&dIC*Kj=gLGM3t5agDwTc4|GlhOENgv z1Z+BwLWzu{xr6shU_u53KbW?w)x2pzY)NSa!?@gCdxnS>`<0i&5_zMXhoWrI0I_wo zZRK3_=eSkr`I|m;&`lp*7Rea(tYNXKUSy=PxMLQ?xbukzzDIbk;4N(e+p*()Ku0+i zv%w+plz7FWLiSm(&Kk%2|7S&c)Ss^7!$QTc=h2~6%}bH!_U-RNbj2^YPB%JR>kPkN zot%c}Yg?4;U;*tWfB=l?$<<&>n60v?&>+R1iK^Fn3Sx!AhY;&&X}|Osru6OvKFcef z8JT}X@CFzi-4N7Cmi>8)yNH|@-j{41H4S8fj0B1Hu|Q=DEQuc%>-I7tj7b9H~m4U^B~=1%-WplVm+x`E_P9Rv+ol3TPv=Y43vb` zl=Vy3#Hi6v%Wge45>?76b~0*3*~edS+YC$`AN644_2k!Q6gQI z_e>O+(*=QA5x3l;b_`;(!NA34({h?^%C&u#*15W*TZuTGAShCiW+4QpUH~kzw#M$= zTmw^*fp81}IhIzz_HpAA2g!84bU69+=+tbe!T?D-R=7)~CJ;dxFboSo zIYtj!9MKc5d57EQc?-QHN(FA_ySo(+^LxqGbxmQf)S!PsSw@fOm!UxD2U#0uBg{@3 z(3Rk!w9A*AqoFV|{(p^&s^^dO&mX7^3yVkN(W+ z5Kegy{mUYvAgg$_CX6Q5Jiq&M=+>MvtI}nnLro4;U4+cDoZXmXOHa9&y-5SBUY4e7 z1P2tSmexQ>Yc|H3;k!BCV~bo&TV(fIH{8uA%%u@!E&;}F_R&N9Iwu^b)N1pKE?Vd^ zYV4eThkW{=8;MT3oGQZmalVdB&X9? z86NG}$Q!r%ds>^hr2U1!iSKS8q5D7&&}mu?M*(%haP$34{M>$1^pxAwjQnL3jkTcH zwvM(yWUx`M694Dubh&xP$fmp87!7{ut9GjY51~vu;wR3zgv{Mzken$`_ugGg8yoB0 zsj;zUyU`tGCAg4-qs#5Fb0xe}b3d+zW3t0Gx+7flBcVX-?iQF#tJ_A>h>cPCY3Jj1 zUK9Uxuc2PCWpU#fHl2segC3u9PqPl|J|RRpaup(K)EZBcU&Q#YEjTu$k)Tmi%a_I4lu#)a#z25VqL$xUo1ZSY`EbG zSAFRmOGb6Rg!+`mbR`L5D-2cH*ygZN2_`Uie^hTOCz%~3N08TJmUCCHc8*@3UABC@ z)%8c-akPm(o(~w#o)6cBs1P5Y9zRWJOOjDB_NIi?RpmR)iCbWCtLrzQP$mo7b{P$4 zJ=R4pP-A6t*76qq&cbLmi=QQ78@gm3XQqVKUX^){LMO5t6i4w);K;@z z?ISPyHlf^f(uuyDMjo3@QADA78LUCh1R{CXATI)z!I72ODwJAGDda@?lZsB(q(1gB zQGPTSB`CbGJiSt@pwx1ob!#i(Xr|^9lH1ge4188kXF#CG45-YbSGP!OX_$QA4XkJJ z2bnFCY^pX*`5f&w2zL>mbi7fEWi|&knTDwF7}mEeU>Q0+XT7(U z4?cdU`hW}I8OmR894T!%8+w)~;|G$?VC1@Z*nG%*?T(%5L&nr#(dUzR+SZuX~L8_1u~jRy24TOH0_2eo#4^ z^dN&%=#G}u4{}&(v~D>)B%1Ddw8w>-;P(a8lR;TGP>DtPdcl#9a%OP?ff9mE){+e0 zNLg2WufUttz0B++>z6`QVp_Z!A{-oUP1Li+*|%VowcLsJX@3UlsaIQp)gay-!9U3Z zE&vocC?GF|pXAyfchcIf8t&3^+mNZz@8{w{&jCfFWJQAy6SzLLq|>rMcSIm@6Xe95 z#TlqaGoBIO{&hQ5Zm@)0LVO%rYI0|hE9^HPX&JwWAE#`xOt$Q=Quc@&5$E+U-B=N^ zqrl(E-T3u8gImZee>py)6Y*tyMa@ZI2BYHj>=-d&`gaC12qyn=e3It0!KE&}Ji zHUe@0{kCtfwZl?tkH~I@wTBa?2_dB>VLNWvss1bshNTAUH-QBWBk@yMiE1;@U7(EU zl2~3#t;`2`7tI;CX)^Ze>nSUGK32w3EBmpiK34V6Sqp*>150$84Thx#>rb}>OJ@d~ z-zN+ohfiD-mdy_B0oJf~ee$BP;u(4;ute9*`ev#1@l(7rR3VFlq?dbtOeCErfsYu_ zVfaV7@IYTi>1+-cNueE?3`ykUK=RV)gMnmXY|nWM8uaoJV94Gq(D8~eEqO6PDGwfl|rWozxrxm5e< zET;?4FGEeqm~30+(v?>|ODI~dM`1&&rIIYZG;{$fw;jO+xi=faEYd^ibvN$Rc%r{W z`ZU`78B)QNY`<7)eG$FYbTb{T4)>dISq^57^3`wHseWn>kv@J1yywO6jPhYEW-T~- z`jT$KL)6Obfl51nf%b~;e(SfT*8dmK-s#w9PXL}MQ`U!o52L1TTf)cSM>b)@v0`&NQ(&r^1)4;m|Pslho4oUDHH08qh? z087@e!LZa|-3hD=y#c$>#m4P;Qp3TvV<~m4`18mgh!PmL-)kjC`n@<1o8zqh$LNRzmPQ%K-j-KI)u8Q73dkx0Qq40e40xzSg6%qds>)XgWX4;&*emS9s zbt_oT1#q26ZDdrLjJvQUT~+DHtq5fh6^6~-K934)t#MqsB4hIsE=Sln-k<>-&G{H5 z37$(MQCvlTp6h~S1tbE#Vnkp-sVO&QEqBktentPMreI;lU0k?V=>f+@C9BE;5ZQ?; z3Ia{-TP!Cq(ST;7i;!MX&y|lPA}njUGCGkICUxMjjuoj8%A#R&8Qh-63a?!(5Z$q( z3J1zf8chy!m!Kwd+H@FRae$cHa$D_9DyQ<)|z!AS?NC8ug<+&%^48Qp*Tui2@KK5uL zEX_&Pzm3Dxi11(dR~^smG6lSDG>Asm*6GA1z-rj$?CV%+VR_27)>zW9wMs7$O{;U^9pOM7x zEpUd7!T;)o(|0tle}<#MtuK~ZpZ+&+jP%LUQ}Cn(S&tSk?4$lBteJcqSIyj*r+a)D z5;?2}v32{@Gl;>P&Dz(BwWm2r0xP?%`_Ndum88h5EQG$4Rxb>%R6gKzF)PBP4XQ68 zMxs%d1{t$P87|5^9)AM>H04>ttYJ5ZJEnimj?J!jjKplsvddf&R`Gw>{X<@NR3vry=bYmU;K+^ z+7*0?vZ8NnbeWa0)XFv!Wrq-E{o0wS@*xsu{UFosyPvf)cs{AM*HUY@__K+T)t&{9 z<60%AZ1{tZ0`D7u_xGgYSJmKIYH-EBO_FBnZQjMnru?ltgXavXxN&p&oM>Oc z-IrJvkoK9t+N+!!du~VBW~DVsWbIwMA8M@YOe}4rU>Zt0_}^ZR|i9((`Jv7Lea{$9SH<^2kuRX%Hc+I*7jOnyI!0ArR<^0!Ck zcLw(R*YJIg_ow)r=5sfnGkn&8`BvH{{d+#o_wY%!^94NL%jbR&8_2JfUH6aO0^PGa zwThA+j94Z%`0HAg%HvL z2V%Ogv4m#oazm}Q(6O0E#0pQCrS%7l!+rGit}l0U8Pj*JkXNgZGzHsdQ4xVpHJPR)ice2s@H}hTO6qa9}B@RRKS!f_z<0oox zMnzc8rc>6-Weh-JVt?Ipy`KqNYyQR|&r<^h~2k0W5*+3Hk{!C}%SEx_sD`SEt3h2Ev!Ri}ph~Tun zxq(Hm>3EGyg!$@tsni^AlqT}EVqvV+D7BjTi7^*FzPqV?>e7b!1 z%FCyn?sB|7jxo9E0`o94sUn1ESnmHId!%JbvH5e!PbyBH$z2?@Y4fYtZ|=cIUK*nA&fq} zeH-?{xZ4ulW>FDnp(yfDFFNj`wmXjyXN(bng6=f!-t{8w&KZZQn2 z{*2@_mjipBoE2zEqSLU9d5{kVwxCDIe7i#s`nBZ-<^^*Q+WK9UhRvrr1{z+?(d&Og zQ=*_DhnweJ(w_$_JA->ke~iw39qAqnH&&-4?zqIe-MdfBoCp%m9`z%m&77K2er?w+ zHx1k_+h23rZ&&Y(`jv_F8HFD|d<@PxO(fkkC_}qV!?g`-+qRCLS$j51#l3YxcZ+4P zQ!{m4AaDGW!=v`NH+$ukayG<*3H_UeUmnr$QScqUOq|?WF;_C*)kD zxnh*qn3~#;qeW0;ZJxdsBgXFfyr0vlsgrKg&q|{gZ9QfyOReXrsq?CM*`15luLdno zPVF?#0JqRDbt7>|{6#LmNG&>MOe;vAj=+)kE$|_|xAdpVzPYetoA$r-w(YlH!^x!^uUFT#829p??X>$~ z9P=?V_=%{A^ELz44@=$LC14=cys+g5APE3z@P)0JE}GlCyn5K-p4*3y!Bs?4gZE#g zEj?qITujNa)D?AY_QJRB9X_7E4;RA5rV#b19@vjAg5kAk|ID+u(|+ze;-hD_!%Ev+ z7(~0_+VtV8p0k}k2t}6df)HlisP(poujU^3jqSHRxprK`ui?6X`Sf-KM}?M}HcJN)j~X!Nf|``>pd?N1H8Z~Qe} z`!79^9(&K5?+Q&2`3LEuE!b&;!geDZ6D0|J4s6}MyaD|T-$e*jd?s~6VL_*zv&8m|j^qiG~DpQ1^6UK0lv7U6g;V?A1KSUUx7(Cf0`ia4DBD zR%)+B)=Tz-IA8Wf78vlRFNwBL%xcW@#H)D&xMUc%tQ9x zbYKOmlXey`Hlb6trm`J54b#_P^vr8wATMt|X+(l9v-(bkYly=etQX&^UdGowT}(Q*4G0>nbbGTIG&vF%69XS zU4>~^o=<^Kkxz-wIG-|~3ZDr+RX&q^3Yt-J79?vy@)jg>L2?%)dqMISq(DJR6s1H_ zVM~dklqgDxqLe5~iK3J!N{OPBC`pNulqeN3Q9T>Zoo^S*mD!~l|K5dEqIT9j%6<*` zdLVY(Wxe)i=Dy{PLo2n#?p$iPgky z-jr&KR4s;7ovY0`4T4|3^Xlq~ z(t=cok`RIQHiZ+THiuYNp@`G*vGWahp?Z>~1bDaw#JG`B~a`jJ5iR zBhIeG_PwQQe(1NpugaYAiK(}6Q}0oc-a|Gb$D4yXz7cT9k+a6+v~7{LwPZhq=lzJq z=b^PTb9N$NSnI+OWOU*DZpnb1E=+Td$(N#z73ZCru^WR^VlIf* zuV(~{6EEhXwTVtFPE%wGC2woFgT`%(Rn7{JN;)-m@oaS-KQAOY30fuNe%n!J7x`LJ z;otYGSgr@D5W^>_(QA0%ZAGl_f$>ht%9%Ya(MuL_(}Ij(RdZpRSj+VTDJv@m>r_S} zfS&>09l+xz#$&0C%SnBjR^?mg|H_7@NgL#E?$}P{hud6Onp`_j;o>Cks;?bs-w)9~ zSwA`;Gq@J(bT-!+R(%%Mu@3SKgBLwm=fmc-I4Wc~<_;b|%M$rnc&;Yfzy`#3x&&9ry5gu`p zRAr2hltv4qMdj|wq_ZFNo_Y^;)u~J5!~c%d{&0%)oW0a88TY$pu<3q5>$mN;q2`mA1iFY)E%y@vGx4OQMb&$gZ{^~VwM zT5UNwSDa@WtIQPesKGr8oGcu*ajI&nhY~dy1sst+k|V?Nl?KP#Y^EDpQabghLS7! z`#}|-;Hsis7Z0V7Oji$QyX#~cXFDA>_H0%~ymR&1@H?3{P`OB?Wb4dJG%a~pVglx6 zSwz2Vt|J#{y7G67mn_@4W*M_UM=5MIv2IhD%DPO7hM+ zpm-tQVRQoaW+Yh#`)bL;UpII4@VV z4{LecDhpN;y}~Lf2@3 z9wz#ah?ExRvnr$N@B3Qx<0tO!Gq!#Dk&cHEb;Evkim&wITJ+)mGu!GzDrmj+ppFku znGp7-_zu1%?JqoUTkYov(17Vqnb88ki;U_54U-tx+ZJ=xi8#an>&l>?>XJ7 zsNIR*u1VX!YJOX7KOx?)H}>HVJKm+x;`}yW*B=FsyB6!^gWGHWNi>GJMlQrQM{IAF_$JU^(VTH`p9UtUn5F!2Tc9xqLFdo@I zePVk5%-r)V|2GZH-|aMVAvTK8*b{WaMd6R*$9O62BmSf~^L0`mJa2XS1a{gsZ?dm>2Ld!{fHKC;G@bq9 zB5ivd9}#b;X^D7hfdQXsOK=PM83Xxzi0?k2 z#;hNMOV~^g_Y7m#5xO~kH*I|eAA5d1-*4e#b7^z^P+Jt+)@^iTMqrSy$)tRN`j1o3 ztJyd*ruO_G&pR^D^8TUL&jIF59=Z@}y1au6t)0Q0!2Adw;R#zGtm_TK)V5F9JU}AdJz0h zVt;&?@B2NU@VGZ?v9@2yxo$4GxqcqNWmnttBF|#$WzXw8i?2X?zMtnOB%U{T7JD~) z|015nUd5hY%(KYa{u}+0vF9=P?|i=)$A25fQW0aWJC?C3TnblU?sn%3#VW!SmV+uD zi=~Q68PAFBY(q{v?_(#H4mG@JD9A7G4Ay9Co6jyja0L-ai5E^eAzRBF(s-Vyf~&ZY z9&=xM9ZB_@Ri{HT&_0;9+nRq^$6UDSktOE|R1D;LTc3|-2H{DRh4-s4ifG&0=u^_> zlQ+UbirU;IRsoadL`CV*Uzl5XSbMaxT-R$dICpku(4ej2Zzj(Ntehr^mJ}B?@r_($ z4Cf>mLt3|nICQMshbSX>k3D~s?_%R=&wt2w*(2W8FzPM~6n-Gchqxie&AbTyZj&$w z>ha$N`EY`8w`vXEp9AZ03HYDkyX%+#(dhCYn03>OM{T1uwgckDRB&_P6CdM?S%W?fF|W z&)<`I{$ZX)CTjU5-n^XU_ALGxb>G-{xRLVXbzc*^Dji>ho zGSd{BONO-*qBE>P&h84g#BB-IzLqyJagxo?kg64^1)$}N0EJCm5OI!p@5Ol<&2BBu zA^4j79YP$xqS_oMi4-J3^bSaLN_bRG!}bq2Hzlup{*dp<=Re|kW=(?PtZj&5g$A31 z0r$s=G9Tl+>>>FR!L2wt5iJh8X2I1wRT^@Fh{6}n;t>521>#}wQsHe_M>s67EUz^} z)hbzsQ88av@*;Sk>+r)Lq0zZ)n<1Y!MfnJ8W_%dJd=b}@>Wy(_%OjXpUON4B%I`vX z^^1&w{K+_oo=o!jpAzGBv8cK8lgBs1yf}XYg!&@8HYVC7!>Y?>F#y zg8y9xSH@NH$e(<_{v7^$d43Wfp`Y_S%b)0SDAR@T1T_$1U&MGRXc;cLkdU~0MWtmf z*0GG09>EhM1M=H)2{lX?NlOS8MHZt>QBh(qB$NzSYIU?GS*$25MtNNT1xNlkWEV_S z$7a;?dy;Kxu=3igPWLPMyNiVAm!>LZI&E2Jrk~6y+LF{jq(0FbMH#LGyG%3pO({KtRkdnM%E5#7Dj`B~jEbv}Zf;jN zx;Sdyzo>IXq6n%-5L`~|PQn)kh%wPZ@8-a}*+^we4AOpO|2djc+-^&pQRxyx?Ny2J zV(9{rXb?d6Y9sDc3}8iFe}Gw$-NzL5K`%5mg$L(+v?c(==dRrsmPTGZtWVxNowljc zFpAM)(4*0TeUz>GCZ1_H_Hdu^qHs+#l{JgdNcVFjiWZIl+gv*O>)lzz= znR%gZ-<&G0C{?$R;HX2~M1)QCUv0(IqmdFxzN8Lvb2)TPl?HCE)y|t5bDs_Y4T-h9F#yjb}a{dw@*?Gw!V79I`KdjTTB3*eGo@Zake2Hc9>gMX* zvJMU`bE4})h);c60{ga}4~=bnw^Jyat6!OTKy)UqEZ4zLqhc5u2^7~@1j=%(2S(cc z^%5+8wetEeU%WF|B7Gho;VTd~n|mKuJo<0JB}JE%Tr%#GvP&v1nQ%$fC6g{G6;f;HE;~w6)hd1uwjeB@y53lUu zl|8(&hgbIS${t?X!z+7uWe>0H;Z;1miicP6@G2f&#lx$3coh$?;^9?1yo!f6;o(hq zcoQDpgoiib;Z1mW6CU1#hd1HjO?Y@!53lOsRXx0_hgbFRsvcg|!>f9DRS&P~;Z1sY zlOEorhd1frO?r5f9^RyfH|gO`dU%r_ULo%R7V;iqA@4yJ@*ZX(?|~Nb9%>=)!4~o! zZXxdh7xD%<-YNz;+APs-iMC6$U!n~Y?U-oG*q$larYYF2DHN^Ewr>iyaSFC`3bu6$ zws&An_|0s)r(oNsVEdmpS(XcI4usu|;O;oU5RIqJSuzggpja0CmRIsg7u)S0m zw{f=JRIu$-u>Dl94OOrmRj@5pusv0DoA4OXxnR zu>DrB4Og%oSFkNtusv6>O;@m8SFmkYuzgpsjaRUpSFo*Du)SBX%~!D9SFr6@u>DuC z4Op-pSg7_qn8ozIurm_Ig)Ax*z zh-E;ygcU^>{fmQ`+IQM(qG)l-#psJ6$27P5&1jy4fo`&L=q0SOEzSBm7jiFt!CH>LBaF%M&Ph?Ro0^h`UA)|#yL~UJRcN@~o=Xng zt$oU9(QKip)s%Q?VhuirHul%2TMN&}^OKy~Xq>*tnwPRLbQUozmq^(#ftu_om_fon z7Pg@Ka|L~QEXOA6Rp}ru^LV^CW@1_ ze5+h+maC=w7$WUX4cExA_D}CALip28Llwl%eVg;WxlH>+A1K+ztZdr7lUBp(vF1_6 zV61r<4@Zk(r(!NcP(=8E6ej>oo|FAt6UcF_?7b^zlclOkJB#U zWxSY==posf>*;`sr-C*QxEXB{)b!lO00(k+gSHn8Mrk8N9Da;Po0ljC4hEMXC8 z=c``h+W9)_mHnH1E@z&lUG`r3C1-i^`Dr}cx;&|RMp=LOggu7yWd87lBKOiNHmihJH2U4QLPVh1PmY&b0Puvmb(fF?!Fr0%3Jk&;J1bdLGYC88UJ!OdI3%ZZ&bn+ zB*y9p>r(Vfj^XwfVMIJ6(<>mV&8?X=PbiRQmux2fC=&cN|0JLPhG)Dr>w0UqT1+H0 zN7L!#yn1sp1-ubsaOAJ+*Jzy~SKxfQ;k$MQ7wF3tZGRl8wVxAr1xezz+i!40w?}l; z?D?BB&)>eydX!d>Rp8m)Jp-1gEm0_ssXnsIC532)pP$l1S_kMI!e`3}B|-NaQ>XrZp3qAh1gP2XP^ur#=xPLD^qnmEe<;4wI19X?ir{#+J6Ds237Ed9)GheT zn;rjlhI&MQ`ZDSoNZ<9N=U(u=j^-Oo+v@XwgiAh7&D!W|&=#Kq`8%Ww4GW%O(C zKJ{Zb{uVce-$J{D|D1f5J)3-%`{D|>g~Q(6OYfx}r+_auF8lb{^D^IMo!Yas^X9~} zoD1WLXIZC0%Ut1hy0guX+0yrU`(Wz%20qDW*>m>%D!$*4c}~6;y0(ybFVE6OS=MSEdQZkv?vn!F?OySuA>_(^S^#de6bpm zzmM}fZ57{I1mQ}y^h`CGuS~u(6K5)C%4f#Ul+F~-6b>U7y3^D1SI;P5{0Gvwibu9U zK~%=F)?USzaC_CeJn=4FW^g%b%KA=AxH1mAL4PXd@5Rmz?TLMDxCXe>?rg}n6QmkJ zDK)UQRTrQd#D$xATJ+Hf(5(+P6w)9qqi^@RcuPtOCd~w@&Po91Q4UBG&Io#Ii_1{n`(OFi12FT7l-JtWN;qKySf9h$Z3SOgHG7W=riTX8BWh= za{khDVo!{IG}wIMu(R>Cu|#nIM)QU!_`8j?653DpJY9$JKnD_8?58Np%8Hdr=8At! zWVEvBjP`3HV>(0nMHuhxXm(fSRCe(dP8Uw+{iY7xF>u7+E96eUa9dPNPlD63fcWF8 z2=3;)jnRUL-WQZLPn15?+eNvYdr>PKu^Y>Ao{!~hk#R$+PifSc*TqA!hHz1>YQ06H zY;vu-8l(VZjO1^?j9%ZwECRl?{D=@CTOA^SRWTA$i2y;;q%{72^|Ho^sNL3mO2SmO z!l~wNBhc+7TWS`Gm z$<)b5_kO2S+v40w{x0XvwESMEq<+80eg_ds=6`|x4g#9|{a$`|Cqw#oId4T*8XQG@ zHzzJU*8#&CYVyh!yX_g;ovh=9Qn!L=CiXx&&pdf-OSn`mH{xx<9g~E)K>pU|TI#nN zzr_W*sdshWWp3B$m6hYIB+LeR_%VIe%2TF4P4dC(Me?x`Cd-HX9@l?pd4)~V;y3=+ zkN9CoJ_~MU^X@mX+r0=3)%&s^YRlsui#{v3cLKJY<^HH|uQ`EZ>ishB9q@EHX|t?R ztMZ6=UFH5s!j}8*)S8<0giVLoXf}S%^ z)fMdg$lLq-Y{|F>4(_8b{I4IG|K#&oo^4)|zpwDSo5EvlJn63Dty^@v_SHI&TAjq? zo)opOu$e6D)&VF24%oy8wqJ+{;np#jIf!u-W=`k0dN&TEivy#OFhAX+wF?faw=8p} zrE_gHH4VLmhsI|+wI;sMq%|tm6C@dj$?=@<=IR|G<`eeYO7i>Lo+Zg{Yj8x_Ag-wybigA(>5`O;^H$*iTXD~x`KKISt z{_)KXehS@s)s7%T=X{>Z-Rez|rgE&8cmHRnqxV~+kKtM2;`@^0%Ap(49mgAd>u~}K zRna#`FTJ0Z4{h&)rJfOAk5bQltK!0q@IY=FMn;&>ZW1p+JR~D>t+Y6U;2(bS^7J^Z zyyv4XXcaLXn82n#j?+H(>cl3JoIIYa3>Ty~*)8n*f)8n+~Z=)^! zbs78V!1nr>GdP!{$7wJwRgcrkU8)|ZmAf20PJ?l&dYo3y^f>MLU$Y*kweg|oaa!3g zvd;SRz(xAube1jeJovxly?ivFS9>!drVqy7nU>Srv-vBuXVZd*d<;45GC2oatR`rAWb`VUX;41S*p9Q5}m{@urY`lmkqgik-|(@**I&wTp7 zeEPqA`e~p3AD{lYPyfQFf9cb|^66ju^lyCn8K3^GPyf!RpY`eIeERo3{Rf|Z-lt#i z=|B4PpMCm&eflpx)fLTPTqmoWzc2IYBYgTupFYZ`U+&XK`}BIBeuYmTmcHlF3vZU<6Q6wJmtOL^zyFl{ z{+$0i^}E-7;SFyR#isxMo(JFf*B}1QoznErfBQ4O{m-6#@CfHl@Z)_wY4*)G zP;2g(;>vvCy8Okmu6N)hU5H8)zwDWVOQ`3IZj`t1h-VDWyNFwK-}(8%BX1p?aZO$! z7Kw8|YS-Z0qGTKA{PJNr+wHgo#YYcmDo1e)^7J~;_v<9z!<8p310q33;NJTCrKH_Gc(99W^xg;b8n zPVtl$9;by9Z#OquiPnAf%~9dZs*Nl78eJ744z~_U^F@;zBfWW4$l?(!{yS}qGSzA* zna#JbD~cg~t@bp2E5-utM*RNqTG~e1*+#@~cRWejYHu@(eW!LL{W80}zfM<7l&8H4 zyAh4JILc(SX1_kwknGaG;R(rxq!#-Vw1-wj@A7`)6O%>L3;Ibq&Q`Y5URkM&En43O z-k64ynuBjhH7~WmpR7B zDj<5@C-ukK_9h;4#fqhG-ejh|Vm`ew?>td6!Z|1`ZTtVELcm4|3H{bw@VGiqXp2)!a7VGAjs_9w?Y!q7P zXFf+qTgLS~Q`eZ9BE+(2B+T79O<5L(uuA6SAM*t=KC6QxqAp3hHhr#sriCHxY!@{_ejW1>~9ml}=2w#p)n zrrzc_-Ut{++%Pm7leJoLG}{lqw-)hrEB($-P*rJSqB6<)m}rzrKEF@gN=+_aDO9JH za;t>PiBh#*3&+Q^m6#6Uylh6{JX5NkpBN7tWlT}?g-X2=mak`LEY7#vtCgqu^4fn9 zBSRlCtK|}2O~QJq(kkJ~pgghPXVV#tr?Y#$hRZ9p;F_9poW=PT9=voVj+d+SY<#>G zmRk8zv0mNV9|%G0;pg_2uj5l>yfEG>hxJKdg_8ry530XDUMn|hjPPWOc9bepM;c3b z9%xTZt<{inu!3~UACm_>VDbYF(pKjs3T3ml)#cjdsS(b%*JVfwt!g7I7s{<>qcmO} zZ{2oe&v0;=-E$zUZ!WR}+(N5XCz`ENy*$yXmnU15%AQHL(c0@A9Ee3#J7a3<(Asg- zl`uYGuBXoP3_lo zkISUop{XgCcZQ4-g>%?o>n z_It8|Npx$XG+C=uDiiha*)y(o9Ti4?YHE)NPm;%u4xD=1+muM0(GV6ZrADn>Zs8KA z+N@R!&v|MBl%7$tkU5#^<$8X+TA3{6Tlwk2p1HVzIEW+s$J!P!C3ro?>N3&Q$%)E% zfkiV}Y~oL5-$CEq2AURAQ~T6cwQ{mzK-&ED3{Q@?T48m(TAd6F%}TMc|8O5LM>n0Z z(NIWrI$CK>mM8NQrAnjJJTU4y%DO~+g1ZiNY8dakDwCA2RO-!U858qX z<19#o1PkWtJpNiGM7^x3dcM^dZ%#HDt!gPO9Xjb7s~Ii7I5EU;v6P+RYqrr2S~Ne6 z%4DJ5YRc7;uZLm%j^duDC&u0lS*A=SAC}6MFkfb&P3Fsu!`mp+td*OULSsB%tycL= z&Kygu16@+AsDA6p)$LYRsTj4pRp9h%ux9d{=3z6ua~o}_Oy+xQy-1HMckS*! z1Hotpd)UN|n+?eY{yO)sI#NWUq_3v&*%NiY(Q% zCTgv6xm@P}t&}KtY@(-J>bwRkK&6j@b-WbhOQqIC7?w+ujfvy=KGT*u%O>jeLZQL2 zSZP#?m5IuU1Ag&n52ibdxLTB`I%#Y|+$gg6qG2yLTD4khyi&`T%gxDp>$!fFJI18h z3C63uTrZcoKJ(-BFD&OLPtGQ5^|D9~yA!qMv^)7S4M?Li?hY?iCOIb9WYuz=4Og6< zcB5v8qiEn^`6E_Wf-!bBJW`K1L0cvR&%SGLzLl#SAdOmM&i6wra3vikD)%J$%cUmh zSD{g_b0LJS#wm_xaU89K7k5Jsmsupy4K5?X_^ilL#W7W7XSF8t1$NkE<+Q&=`jwsA zL?#^8;Lmi! zdAxozJR2MtONH7vw>hUF_2t>#&wEy)lUjtr^PU^K8=QU|elPGdrTs`1 z&|j8HxLT`@*NPlBtwOa`y7v;0L!9E48vP2!iUQ7`Oa@n?2l`m!umaPC$qvNY<&uu^R{?r;@sa@An9A-i9{XaI6Z zEfiLkP_USXs>Jid)Rgngs*6By;&6f^wk(^XiFUc{rU;O7cSLtYEPCBhIaz9i^?Ic| zKH0#IJe&-RV0N|P4X(9Hm5GT4_iVWkLS?j`?ds`wP|(8OW1?Kmms*WxtHvDzqA|XB z`(OYnF>|~kJ7vOFvC5227ANuzQ0vJhf9d)99TIiV+`SyHV0&8*m-R2@u!5JRu6hh! ztHe=)Z?N&O*(g?Pjb(pbFmZDGYa}c@c5ifW=Y=C0xhc@&)X5$%)#|M(!8<03waLl* zlDjUxeRX?R#wmdJ#t`Ro6%gNvBB=e@qpst+T;l@0XkhZX7P{4~Zw8?`(cnrgO*RYF z+W3keh)V&toVfj=t?~_8CZrD@*2=4Ulh?|{(LVe;PBtgYFr6TK#!+Lx==E70Z-x`i z>f~gNd!STkwl7+uS;{xLTv|$P=8KK>8Q(@vUvaIXhlP(NO^0s0S`}|ZU?ZjR7Wa3t zasNe#))2k|j*KehNp6qH@n+|e$^9BEh9)C4S%99XRO{W#B=_s}5YLy*I`lIeIBafQ zCOq6T6=@^!1uAtehSKIMuG`Z?wj)wCbPV8YBs^*^NsT_YizD=t`Lo6oj$?w zYOb!&<3xOu^K{;jY>jcqktfuGM#m6h0p3Dxa9PyBTFZ-2;Wc))qs6rNQfa)LZ{ano z40EW)e;2;-y1`H`rv)c)R-t;-eHu}ltmB0r&JGw;d9pmQb&*{%S!h(Ma^H_v3QfF> zzUVf;0Qxh<^d$@khKvKUQLh$Sa6B5^+s&|6eDNi3u}Y=ftdD~ggTrEQ(R#@xLlDxW z1~+e_RGh&7YWby?3;{fPqQMcxaagQ1>$QJ>ncET~zsjM}s!!h4F@>6Ut5>}k$mNMM12{zzRz(=qjd}5YB%b|brYaNgVDi;6$m(Pv z-+K9VXZQ36vPzg^4rEdDc5h!*comvG<s;Gda^{xv-@>OVbF6ldakgJEkros?Onlv0_LN?jG*=zH!xmp~;6uwXKi zQmH$=_uhN&z4zXG@4ffl=Y0D)JeUXEO#+Xlj%r0$k|5SS*PgS_-fOL$?Xsw&k+QH+ znn!{4B7);=*Ph?Ef7X(uVRKbqrQ82u%J=@$jhAimvuPi+34IR9B4Y56&75Sno^7Um z(A<@Jb$4KFEtWkZag@%d@`2P^PW1Qx@>jpvWaD2kF*q~M}7-)E<2^mD{deX|8SWjvnwN%{-e!5Bhhnv@b zwtU-VThyMs)E)*3)8D@Zf7oo3ZEU%Giz%yw}KCJUl8 z+NbAt9q+@em8V&%RD5NFrH$h>3z9fZ6ABr{zCC}%>Bze&g%@_qwbzu7NmlDY>JDB| zP<oY*I<7-M=SqpDe1)BJIIbt@I!_u{}m$1I0F%JbxI4W#Xm>^lYGD$%fX+ zV?!D>CXEyyxPi{22(rwu!7>R6Y$r1ZRrodwvdk%&XT`h|{itQ{(wJPwhO;#^;%4rvy}Qlq zlj8;^NpMt+oS4k7cj&?#)=f+iBqgTxArWVqAJ&tvqAg)c&c7oU4_LvRC|ZFZG4K;=G`bGg+;BMJw{Bv#5<cTVbHn@LjN7}?xp z$7v7X(r<)PM_T$UHLwGY*B>C@>!Tt=?Z=uVI6;2^%f2NnLsG$Ps^SyX2Oz;`%Fu_h z5t6>QCutAh#cXvfiFrTBQrG4uYY*UitTHKt0Gg!~foo3D9w6|!bJQ%dq$q4q`lqT7 z5XB`;CVbzG@{mHoY3c(MKI>!=X0BnONP^R~2cRsQe>I1+IqT<08uY__FW@l*+Kt0kzYf4BQdX&rU+3EvOuyvE%rPT>7L_+5r?Ez8) z5hjL1K+MZ>7M-g-Kt`5@^bAu1dr{+r=V=cBtHxm!4N1iZxyj=5)d%o%5uQU;+PU)+<-jg-R;Ot4QF%%YM#kO%dvC=xFzFX>5J z&`BT3{{CN+c-gc)3nNpx!^+LuUnZdq98+G}vscgZwk=$1+qcECzxltlty#{dY1y_l8eARf zCoD-}Pn%ocEoR@`a?O&W<^hmjB-=qUD)QYd4udOt{(aj;ljW?@{#HnxZ5r`! z)XFb%h}0ThBR`96T$UW?${ss!>@YnKB>Tsj&blTi=b#dAHgBASqWs7Unc&ih9a#}m z0(GwHDHe7d$hr)ZQ7fQtSLm{;u{PvaFZ3|=SH?sE1x`}(R3<3F$Jg|%T-d9r)3oJ+ z2(p+LiBiiv$>ZqSo^oMFs&UU5$c8aIE|Sf>Q&8fH>lXY)fY{AA^oAo9ALJp#EYF(o z`kvK`a6ywrb7;S5?An4>ACN8`|AvKrRCQ`US4KPe)QMQoN!pUiPHyZOTG%UVQt%ne zamv(Y#Lt%9cjjj|^^7j;SnOG$)wJ>T88n5bQX}Q0Y}iO5-rO^>u!GK~6JT6J7A^3o zfst>3fM;*%8C%$K;mS{wPcUi;n=B%-BZEYQotC#Q)GeM}@Km2z!Zfzj*-V*vPF6Jys%qFc)d9EBLJGdq>s z4WWeIy|`Ch7c{kqOHk{`HKn1%iClSp&mzCo^_8Y{jqfC>Z!O$JClBuJ*6Z5|)QUQ7wB{G&v*biE%{t?R z=m}cEZ*9vUnLeQ=)%Pc4-2NzqjxzV4nvnUBvXf)d2Ybw9&^!evdyOq>$B_L2 zxw206;LU3F;P#!6n-x(I*#b6Kn8Jj8sAnFI0F^u+5e`Y%D2HJYJlvzMu{$zyccNA3Rn#BV;iUj!ksPiIL{NFO6l70 z@t(N7@>C<%;!S^byv#>fP`n12XR%J`x5A0+$Z9Oeyho-aG{D3EPzHZJoePE9 zl&YMlrs3s5h5V>z(>eAr^{YZ2L&Kt#1NBRjq`}zcIo|ETY`WQYSECs4^FIwElaNToIo0 zya!yJjczAd9K`XbZ9EMv2 zB;uX)o1W|Eybq05=glhZyeGV9w`{YuT)^VrH0~P21##7>c|#7=GLV>7)Y~)34K%62 zZv;(#%N_O8RqRnBnp{_2z@A>;#maB2PTTrJGTY>h)iBkLaL$w5Cy;XK=Rcy#s z2NCW?5nEQoL`Zof^8-mK@#Cqlox+@LTk7D{PN1)1o#(u4;5tPV!?;KPk%s<{Y<1MX0;;l7lK=&%E(WjqFhE;@YD* zLLS5n5Rwq$r#A9;S+Z`SlX0b#hHQ-`$4hoy(lB6}VeL}88B&{pj~ZEAkaE;zp64gK zEorE4XF!+|>!<+?nn3b>@uB%HON`~bgWZ>GQKyK^Ku+_K`O}}auNn3KKX~q~{_~&Z ziQov}+6Zl~Ljj@m_gMEsQDBD`LZS`TI^qIn&vic(J4llc{L6<*M~gSYG7?lYn3l>7rv2R%##f z0}_P$Ecs6z2d)hx&Aa}PudX(NJi5rCdW&0)ho*!VV&8cOU^}82fb?=m!JlG5#*60L z{g#~B)A15!-n(g21hxGkNx6@)UKA6e#NR4gYpjruY*FQ+m$gFO0SSvZ)D{@g)y;|! zs;2m)pgxq^TNduWq_dEr$`j=FCMhI4R7(ZC5trcmfF+l8zWU`IE*6#*ku#^dIksGD z>BB^~b!trW{WcjSQftFwRc?#CY)yrhym!11k>^IJC7mMRj|VO}u(RH3z5(imiaAbM z%!I@=u)n|lt1ILwa~fGuV2dZMDcFhEB*QS;c7&r{*A7noS+l6Jb?rCjJEv_XhGiv| z>&6VOao9ioDPJ`*HZf}d{AYeX^>2e=33Y{aox*?4PT4zX$&vpoZpj3FCaE=w)q>n2 zajlX6R=oj;v}%5hfTmn>=fBLnHJB$sjmO>$ZD~mQ?cgO1M~Ydd$0@VaPk&aM<&w<8 zO(QG_%9x6)Ib_MU9jAyE9w|8;(&}-fh(o3{U*Q}Fsdliyc}PX#42qq5=)7munA#d= zLVMs~ za+X_!^$`+;V>k2(@!3aC!A=d^s>Jb%*+WMfXp z(B^HDA5OVZ+=@Xbm+AyUw7f{5kd!AZ`Qv<#iA6o%ZmenkSHGELPD;uB7VJ|S;n?J_ zEf-I(W#V_h8E}zUF=GTGUjeR38AZyhfQ**s;fYI*?457)O(nn3+#=Wg*Yo59^1VKw}^=@M$ce z3pUJn%Tm5E$ch~odI)*bC>1r1|I7N{7VH8rQy8!Hi*6jBj>Gl8FW3k?b(z$g&l;2J zdET?i&$ynLY8<+roT_~6#zZHEnNZVrB-^%DEG^|=+2~4J3x8JZxOM%fRgWrx4U=O1 zZEwo~4w^`uOjC;V0mfWTa?+B&o98BM%hbTDi{OoCOc0_PQ(fpshWS`36PLdjz^nr}9RVVGBv zvnBoING`lgPFu45e6Pj=Y_jDM2cFb#aX-hj%Ld8m-5NM|Y>6Hche{u=wdbC(WY?aq zTyonkpX>Kw;fe!BhPxof``MWr<}_k#5gkYTsY@&pZFbg@hZJ|Cz9DOEYidfrY009= zjLSCJ4)s@O`Fyv#F)9#|P#fJ!X;%;k9MZ9kEmhE?DxxdOnE8MK_Db z(j{O~KdxqI+AN>3B^Z}|Elc&5jX%1zFrjh3p?l?#OJk83emKo7F8putirFkqzF|Io z&gkPMT#1G5bJ3D{)1q6~-ks(yb=s`SCbU+4SPf@YKL2K}ReqgOYhJs|HPGr}BOdf| z7LfmsFYeN?2qzLR%^=KDK}?fNx-+bcs~moA*m^+T!wTurE)7df4i5l_!Yh1O&%3Nk z!(th26npBp^dF^tZTW+0Bfrc1+8uXm_QI>Oo_nRab= zh7A#PCVnoRLa=}c)9bo4EG=jdSojpV9iJ8d`tA%%S*vEz!G4Oa4smcpcZS7yfl7*T zCDu&XLEhM%VKGJXGF-A)2V4(2=S|%iHluC;G^7x!zqGMS|r@srD5UbJ9M821O5-bN4IrnShj6=#>ecKSo(OYZ|~Bu1^pSQ zLiw0-y0q=MqdUX0xQ7mHt^)Ls7#p~Ec4^oofuTbS9<05%=;W?$4V&{S;bNFd7mGZ& zyGz3sxF}N7B}q!enx*%2Yglx)2->U=yZy4bw`;=|p^I-F-g%yJi~G7WEIu#r5wQ!* z1CN@ndw-XP#lnWXX@bLCVQ94TK$nK4OO8v$+F$?+!8LubJHtw61sXHrWC$yX<^G}h z^ET_Vzm+D~vc08Y7v{j+Vf=I;Aw1ljQ6cig2($c%#g_EhBi$JlXF7VN(3*@%gBC-N zc4yR_#z0s+1{qyo;yik+E2FxY3tK#kEH*E+o+uyh&Zu-cV<$p8G3giTm?ye3DvaRB z5H6Z1LgbS_*_}~Kq@Bnu;eSOq*(XnRWmFG?fzq;<_UN)}!~E$kjq1~_2O1i5C6ZFb zGu;`rpnX>X;&V3yhP`7Vu$Ym@b2 z>~ASfX2lEL8I=}~#>EfGBMpYh`itEeRr;jSzYZUKTD@hZ&82}N9$To;(Xp6UyE7_cb0LpK4kc$81g~{x)DR6v85o?* z!qUX~>)ja@-v<2E>6nvP57*B(x-%+CMSSXA+!$EXgXGPwjEWkJLIiC#@#=|aOY&BC zM#Z#;9V`JN?HK~&zulctLv*GjQfUH1>DGGhbY)c9{1Jj4dl{C2bXX%9^F?_NE{$5?1sk)A3?LcU;;ZhAimo^y9>#qe^Ulcmx;vwmMP{)fC?c%U zDDZsKl~H+_=$ptUCqm?3Snu2Jj0!D?oOqV`9*xS~^t&#NO8a6LBQQFiV)y2L-OQ-S_E7~8sGb;O6+N@x=jv*|{sD8fhkDNlCM{V|_QfbZJzII&?#drLF^gWY_MDO2_ZofY_$dG9uco zJEI!;Q^nuda-W+7fFq2r9Mih@rE0cSgm{(3Mf?Vg;WYad(7E zYaW^dyE7`;e(8LLLv2{ly!D{2j7lXRRi{+On8|WX)6E|=!lKV`J^$;foId9H%F8X zUa;buqrn_VX@*1hRy?<9o??UI$c^YjK97#3IZ_8I{^ZerhxkaWVrjBZ@=2|$ zXta4A?Q+q`;!NX4bWx7k5V^^58y!{oJQn2U)b&pdLD*C;VA_&WKY+dJ1eV=|cl<_& zFT}Z3_ZgXXZY{qNX5Gw*MCbq;G7h5?{<)kOaibv{6y^opS#rABGLy{n?XI_{;k297 z{&M9!K-^-zERNWGM)^q_oiMK>MVp+GS+r&(F;HtQB6`Kqx;@nZPhyq0UJTS6CN`NE zT2=EiX#d+3!-tkzMD2M0VoV_(Up4cPnr>?j>yv*mrV#t-NmH5T3eyxBcJ$i#7h{Tf zZ_&RPQ}ho;p-*}tllo#@B0M^IqpCfX90x*e5XeT0*)=at(IClFAu@`H;V~>bRfD8M zB^ip`LY~X>(-cUWKSjdst2re3r&mY1Xt8L)gvTJ(UQu|40vQqR(Vfi0HMI!MnF=I5 zkfo_b#IBu^^I6rAj0F^H$P%qw9GtB{M#!+pBSJKS-Q=I6K;npzIG7`lyC;S_SAnD( zmrJG;LvHw<-gydSNxSpZ7oD6>N6quABPpiPs=XBHB>lLu3lvEDOrcP4!jw+OiF=_2 z>0@+f^~w6HOM@5yi9r+IXEU>qCjRP&eU`dryV=Z-!4@k z4ICdE&?b@Gi<4cZKqAD$1Rp7p!Q~{qT!G}?AoHU0c1{m#_loLBTFgUAN^nMoWEaF& zDv-1rmZE1S9oB>Ns_MuPq8Tn5^cG9}EQ_vIAnB>>2jl_RMA|I6MuAL1a=EBU;iSfS zc&!4N(twzjdj{GIs~6-fFiVnl%J3il{aZ_yyh%)^spXBuML za%*)Y&8EaKyC_J?vaa2xK?)HS;~S<1C-81pAgzQ40r%HJ6ie=?j>Nw*hBV@e>Mkye zI~7PeS_{W9L?U7mdslTNEnedSKUf^`18kn|Rv;r5K*!4?yup1F-lIUKh#uf=qirX_ z=-;bA8Zu-KH;8II9;){#kht!IbXxGRAtWZcUxUm_QqD|9MeZct0~#bP28+V=p{e6G z^k8))9_4hT#Q+M^bqtFhQXoCNMpzw4z0rd+eprFTtb^B`1Z+SOA$>%Fq@e<0D3|#p zh4A#K0?8ev)hcojYJYk8m%2BWeqa)$bSYt{8&71Ur`_lhA<)L zZO2M4C||9Pv<_zIq^c1}8`!|FDUbnGtF*x93<8b`UsoUv#^eOl7+q)Rli#S0qy$P= z4C{MXPSPyE@Is@drN^#%aGH|b04ygo4#EcNef@R8dHKO7jq6jdq;u9 zWP;5@FD)s?FR}Z z0TJrcl9iB+YxH4tBr<-OblCdRLm3rS7L1WWu(dDg*{pMQT4&ASo1Lmd?^kj2cIuE08$lL2%~f3r&{hUnr0) zNT@Y()+5Ky&6m}YKBg*C`r$is!qERpf%ND##j=15CxL?UwFa4oab#!$Kq}46zfmBi zuXM^Zk1_?ftZx-aYB$6uG;gO^nRwq-M+V#?qy#n(5Q>-4_ZnngB19lL=@?s(}`8u z)(}~zzI#k{BouZ$r%5PK`^u91SOt<+&yXO6l!$Mmf1Cn|7K7;)Vh%<@X>q&)X(*3C zf0qRfRpEGju;3X&9d((vTUNFq$0 zC&epz(_!V2pQ1n-9K@v)cfjt|wWlhOmKQz23ygM2lrm4Nj$|1#@L*`Bo`|pH>D7_! z=!xD;DH|Rfsn1X#+36;Hq9u-ePT-uWK+?#HNV7z(h)YR$mI5i3X-Kr#y5@cmovlF9 zw8oO67CIVvmvgEkeP&r+0%F@RV?8@pflRYJ#CRr#_D;|9^At$q+Au@SpHRiJ=KSi& z07GE0WTcH+>Se(N3MBO|gytsa$q+hTs6av!V2gxX2d1@tbddsy`i(9QhED6$ip|9u zWKPRgR&By^j3q8nAaiz*)+No&G@qGEt0QUT&L$@=V`^PXq(&;=8(OmPG%u2dkskn$%j8IZ-$J>V(@67wuFJ?P(Pa9RXc zE0Bcov9&R`2Rem&jRxr_d@R^e6O9}1S_LwttVbaUJA5om%j*=#3_}smXKA23n3?Mp zNa>6iNCDHAh~WkWl0b;2!Qvv1n9;wnIx?n+O{mEhn>!R2Hz|-(PJ|KxAD_X4n-xf$ z1yDiKsElU7*4&~&T3%R)ABG}==iaJ7(l@dYtNjwHyNz#CAW8U^nd4C}qb6x@ua0Dk zoby>n5uzV_eC|*nnc^X6ha3UgcyOlznOeS0<`ZmT9lyLwfh1*Dgk*@E!Xi_>TYzY7wtMcBJ13%Kn592Drn7(q^V5&`xHppqEeh;8(4ll&23=M;a$3vX$_drpsmepaN+~W@W@~G~gusd#E~+W=sVvJt7m*&0+qq z0*M|3bw8#uAxn#Sq&l)lMCrgw3rR1`?W5I^OkSiX2^P`iQGkD}I+BPwf)Ykb)T6tq zeO!U`kn3VPA|1|otWPMAh}r_liwD@MI>nO;BuZ>Ue|SP;YRtt`3M6S;>h*-h^z}5s z(+Xs6L!Z4lW0p={JX0Adtz{t5;TB*7^iZ(^Et!fW+k zRv;;yM#%6e&iFX~y`n&($fvCr;z%^qiFs9nBnZb-#Skm-dB3JYa&Jj+C#(=*^11?9 z;6{XnqqKft%r_KBf)XNms^OU41mT+sBwT3rWp2q0qCvo0)sc{5F#U~4=LZx*)3>W5 zv0ADzH51n(;at38^s>v$HbDAbX6HAsU^eq2hCj z`oy@mSP!ep4-`l)lP<*c(WV_p=6t9?+L&08jYsO_?9o4}jtmLJnMgvHN)n{jk2Oda z#Wno;T5Z~VQXNUi23xL-qL7+m;e4tKuYPH0&fn{09Vb=HAqO8 zhG&|Rl2`$r)2G6Ow^j#@}j?xiNgAH0_}CVELT_8Ihx5<4UrxV2}U30*Px% zKt?lg=vD8AKU7DOk>vm3^(9Rz%lOCY$c%z=RNxSXuPZgTo&Ni(^-riye4Z36gvbH4 zaAyTFwg?ZXvL#`_&UcsUNFE}Q6tdYI$8(eIsz9=z%QCWkB*(GM+D(DX*;}QM6C7J$ z%DTG(i4_ip2pGgTuqT5(sv~pQP9fD5dh-aWVowFqBS(lcJJmrqHsxLlBuh2=Z-{6i z4llvp3M8KyR(kATN$C4#9}SYEB-9u>)|w>`B#;WT+)~Ax%6G zBo!wske1G+qzK^{usbVHsg8t;8uK1yyhmJSc&Y{&(b`Mge^ILz*=Y(SEpOn4vf07S zA&5>_AWM*>wD8vqdHc?&jtonbf?Oo&H|7QB%<4!S)qL!n@h@>hvZ7~ckO?6Ichy2; zjMK9fNQ;OwfKmf70{-_o)sc7#qI!{pf*4bj=PHmiqeyUHq?s2InEX5i5;_=s8p7i; zg2sKm0*T=+A11P8GTlyifdWZs|qIp-+}W88j`8(vf$3GhvAD6Qos)sZQj$=sBrj+u~5eyIW}7LT;pWq*Y>JiSbT#C;PE2SU{l z-bs160*ObeFJ3_o$__8MLV=VfSP{}I_@(6huB?uvV(JxCya?v0OM6#UM+y%XI+*oC zy1Mz!)e2lH}eI_N*N4;Hh<@P_Khf}Y3dmR(_D1VMPC0!dz*9!o)nGaviqn-oY`^~?xJ z=Mmj!-pv|h;j^LR?i#iZ!7U18#-N8MW$NTLf2I|&-ol6B%X1(Iw6ojHia zp{3^L_UcFrgM;Z^rg(DP*&Wr9u&ZJu4^;Q~L*U-2KzhR0r0RgE*D2Dw6v&839tNZY zHXP$_1u~(RM}d(ByB%^8_b8C05*+F)bVo{9yYH=x3>}}OFU;>8R*qNr_bHIfv>9C% zgV-~^@7!M1WcY znioQ@w=5r5AR($m?C-@z62kEl)sbSsODrUG99Vk!lhu**EQd}(*#ZF+l;NioNIDld z9()nYf>wr4E0EIDA}on**!%|JGYX`n2uXk;CnwM-pRJDM1ED&{y}{|mDf8zP$jpJu zpI|soPTen`S0IJnM+O&myjwWt1qG7C5Ogk~3{xS@U#yO#^eG8>v3Si=8@{ALQj;Og zLktF$!+lwS6g?ZYGNux?E#WH)B;FJ}&de0jm%4aWgA7@F6Iy$w=%>8bG)S07bZ~(@ zDeuJV)sc`BND-2ogn>&?^o9Z%uq4s(JEXG-f#aJBB-TOH!jY^>@hg9;I+FPdaigjA z7=d8(wg!m?0A+4Ua-4+)ouq5^g2NrsS4rd0&239f>yt8+Q9dn%BSJh@6TJT5inU@r|4 zT0P7@C>7FwXYcAr_R8p|*!Xg#Xv+6dAV~=Xr144i6zl-@t&R*aaKY3GZVlPDsMt?| z6q<>Uzu5)A=H6d{#38~%NlxQI9B<44)sf_0r3yrQMiS&%ai9X}QSzexPWFv&J32^# zgvEpMs+Rhtz;dtx$@GJ3v76ASGl;T7sw0UkEDA>wlFSS#d+i(UmZ#8Pkx9M3F;ilniCXAZVf)5DQN+eGtr3(WSK}4FDyT(S=jQV z>d4$x?tXrT0tu6XXq>t|%}aCdOa+qs16eFACeQ&F z$yo{{W>7So5&97o8hdtiBv*+@8mTp9S11bSD3Is?!jR7z(E>%9a}`K}8n#HDIK^R# zab9&~3I87gk%v!Hng`kW3M51oDl2Ttn1)>E0tHfR=?tNbv_bUq3pGgcb+C?bBxAc{ zE~<>gH^C#ufB{2q=n4G$>5NZwLmjs`~D-}osB`3$fBXKaq z%dS!&*=Vzjk=@ z@~(4JbtI+D5DxK9a(ckm=ep4=Rv>hgdL@ z;!H%S@sI+Ery~FJSkd6gdkA8($oj+7b@LO8TG_@&0~3koFMA@r2kyBb!B^2O@N61Ju= z#tCv`9?we(B=?n?pk-%OV7>ctWn=;+3o>F}z*1ma=e?pp;-$xO24N(nTo=5mKvK5C zcDZ1G6eFT~tvb>bb|2zT3h1QB)7KTqlAUf0i59EEG>+b=jzrJPl7y88s)xjn-&7z2 z9MoV_47b zQGrCWhqwZJoHB$nx6}Vvwf>o84$XV`IJvp58wNWokT_}62!Nc6STZ`hXpmHvVJ*R{ zAsZ3ysz8ckDd`Vn#1wjy-4sZ6Dh1x0#PB}Uu-z3%Tr%O7LR5ikXNow~# zKtJVXdn%An#>GIiWHX3K@LmdJNu`Z#83j;2H)rqaNc4U*)PZG(HvqxZJ_;n?G*Sr? z>%Os zQ0pZ*ey9Qo&sZAQGA6cC?qSuD5VFXGB}n3ON}0jo3ZxZ-8w6r7bMRz5LV;wvN|RkA zSCWy4kF1O&U5s&f1O;5$8)w;33M4W(I%HuI7s9#=kJca&%aBZnu>No|dyE1}cG^G) zBmQ?yo*%0~QrkoRiAQFVS+6**I#N3Q(Z50(_NDASj#nTdH#5geWNab+o=_c03RbpP zn1)lwEc_D{NYWlIB1~%n2yDek3M3xUY+5Dn3unMNS%D4rCM&##UQsPkexgq#wFOJXiiATb+fQKB;h zaY7tls6ZOVBt=A2&Ai}Wq(GKr6A%YUo6cV8E#-wt!`fPUjK@l5dk@E1maz zW`_7u1(GfTA#IMZQAm+TUZy}I^&^*$HwCjw>R(htCETg26-aJrjJFtR<1n_#H43Dq)gOg$ zI{on?c-JbBL^N=RC}0-i;(c9pq^K}4U88@7PzK`b6-YnC0-2s*&{}aRxj}*CN#Y$D zP!`0^vAj`%BsB!fn6^PaA53|Z0*P&IN=r<#u)GTH&DD`&VIW-37-BQJhg%d#yri%* zz_SKcbR6HRKr*=#6Z3^(vFX~|sv{wIqV$R|MkKviMz<@F6whfaXK~$y^PAnFK(d=d zrh~N|=^Ed;vpO=z(vHSRIZ`@ivf?fUGVz2ImCc2!`?W0 zM1kbf7D+C~4boTVQ3VoKAQ>gH#v$>a^Oyoj2?{kOVF^5iBzU|!Qk+;^xRd1jD82_z zD3H+U5q87b#PP@po~(`(A{g#hn8RYR8M;p?kc4lL0welEBW`q_)*$&tm^meuA}{)k z2FYewx(-F`m5uYP0+}M37ZZ5sJm~nIQy`0wO(323SjuP@@_cn9Rb{FMY+jKA6gl*zi zG{^{x6C;%%Cy3)$HAt2R3fd3`*k3uXDUf8F+3Wyf`)ae-706mbz(KSHH7oJnsE(vz z0+I!$14==V-QQFo5vwxo(P1ko$Z5T$KqBKsGKf`4i5+tGwgQP0JIP;C)i`j3**glP zc)Aj%Que~x!n~_N#zLgdXxxXLcJZD9i7PQ`EjE!Q>CNK(>PVa=;3dQ?`1txe&Ibyl zG|7UUh3*~0a_7V9NVpdip$IQ<<90IdBL$Ks#IhWTAs&2zj}^$cz)LE|fR7m0GoL7s z7|_a9;w!*pl7Ctq39B^sU~i*cK;Gtjra-14?!fRrfHS9ju0ZB^zfgyi>4+@%7YbxS zhKDpNO7gh$!!N5N4ed=Wl?Q~8@CD3Q3M38e*axDr2tDj4zg8eQTbw&kY(b*T%WpJD zI7{T2J(?Y{Vfj{pgyzmiO{+h|%bEL~1_=p>OGF<8yRiJeIx?p}2-zVhM1%^V{h>ON z_5*|#Y|Jn@VVCry0!bW?C!zzX3yrq3)BjYp{webwwumshq^RxYJ6A^%TZnXz#ALwU zq1dH55?eb8SBUM&9aDnXRfU9iDL#kTDyGqH3M7>);viaT1|%Dk-76yvuCTaTh)I)E z(pPv71(E~?`a7hJ7;YuOp4E{=2Qfaqw9vyFF%S1rAh|mz2k=?NAU2BkRv;r3c##Ph zn1sH!j{-^Vmi<*kYX}ENpna<&+5e?zKuN7*!;!oDDUj^3nZ7XC!P&0x_g5h4E&@m0 zQuIO+;2)qsk_5vT09WFW&?r4nfn>GEn-e=0$HKuqs5+8Uq<{{S5q?b^`3EbI*cj90 z8%h^$#({H)0?B8cQIZb$wh6=z)gVQdd(Z!#R#pOs1l6i|_Maf>!1pZM9BwbbEp|Pll|5bQ&btEATgb|h` zHc9N4j?o}fGA)>@qXmGgeyjp1`b4y@SUfQW`o}4d_%-uL5bKM#x_`U^iB&4TP$UG1 zQoQm61(Ign(pxp>2xa1)SREN*Hc1B{f?}R&>Yk)P(khvI8^fp|d*Ym|Ko*JEWU_Om zk!)^Hsg5K#h31L!0OANdwo^4oW|D#hf;BBm6beM}f3dKk*Ub1~bja=T=9eh{P!s2`6CB}jDUc=Y(1|k0Rg=4mF0PIgjva|+ zZ0pJY`tBtPBwG!SnJA#w0`4)FDv(IC=?us8M}+L9mno326Ea#>F-zlf5?)>%iFblW z3w7xQg(5hp-#iv~#=f>n_0l25beTNOwg_~^=15ULX8rnf1Ow0oqb5(HBkAms7w3M9)A zrW6S@ck~j`9U3I+egw7-#UzY2@2rk2abqWK2f5GSIFjF`KqdyWUE0*d=th(HZUs`r zY)sK`Mo8L~_b8AAi(;Ra6r@jF?_L$Mz``$t+(0tczppY9dKAq8*(S-7oqFE=3M7pv zNJzmSf;ApE4^&4IUzCO|5|a?l#Lk1&k%S3|q_Mgw;KxM4Lkc93u|r35L*Evn`G*zA z7*3W?Ia0QDZvKb@NiQaBsAwEdPSj5yRUj=s?82Q4m>1IgF$J=umP2bU;kmO{f4n-< zCx1qoFoEubF^YMjI+EQg{Vi#8giRq#vL`i2_DIsWok9}sSx+gD1?CcL>WJgT;qd9| zNYc}!B1q-4oKf|7Mu8+9fB_b+6!adY}O!3T`@N1q^AXCJcG5-@gA@rXL zq-9M&2gUS-RxEy@I+9H%oE#TdJmH-LFIGpg{;>!~2|Q6axW!8fB%EK|*Ibe{A$)sb+(5Mjb};p^t9exyL+Wx=#ZWKH9PB>h-{ zEQ*Z63alLXcEM`%HnPZiSIcM5P!`Px-k5 ziOd1zr-!D4M#S+K3M6}7m;5-1G{jT(O9hf-3*LXIk?^_6y|1bx`A~56q#&JpBHPL&qb8woDF{uR`<1GA3;$?k|KmAxx&8cw{g0tq1%MG-8QzzZUGKLrxbhoQ$Q z{hG4^#?MHzG`9+Rh-m!70S@=RnNlJKMm zPp*z6{D+JPNuEMDA=N1gB!y)%j98=N5)p)_Dv*ffY4a_u+o|v+rzwySvB{qanGriQ zdwO-G;o{)u@dA=fh@3O3Bk?qWhE1Xx;UCK0GZn~CY};s66f+xn;aLh~N--O&=ZN^9 z+|=0$Bx?#*m2~wbO&z4?R7c`TC+?J zXk~{i&MB`}ATgoJ$@!9MMos5kqd?MhqYx!9$v)!LYc)t#&H`Sb_^9RPy6Q-2(T41R zlqi~q)LgGXVwFmZBq)~{`FZw+>PX6n9+4*EWsFgr^hO1e9u2Gtdc=_C5uY zcsgJnGK5iSXzy1bp`6n>0}=)bizIlUIub_;X+q4#7q&@~KUf_pgb~#C0lW|CRrHVo zS;EyMZIa`U!tD332FVM=GDcm8J%0E|b)-ZyViZB=AllRvk1CL)US*qvXbUs5@-YQc zx+b$e;QEXt*m+!qMBs1vu6+oq*%Q@~kjBa6!_EpR*%sxK3M4!`yr@_M32of+sp?4T z=aO%MAy2m251&>bp;qyYQHPXnu=z6zq?n`Aqm9iZuGrDD3M6Z;p{o*6BYDx}x#~z# zA4DZ&xzVLDmp!jQqE(F&)bDXhOP%b6>PYIeo=7p#+DoU&7po&_Uq>4<;rn83=L9b) zkl620IUp#4BpMViS4KkjmGV2$KSV|{xUVRXxGvzG=;fRmGz(VNwgXwph%FOnZF zPI1Ls3M5%KGIn&`aM=FZw>3zT7znM)fGl;AzoS56SW0@Eqzex1_k)1HjWu-1n;^*#croM&oVLw(5c1^EmwZC+sWp#n)&55^Oj zUlQDY@{s~5jk4H9@&@54m3~|ui6D|!0l5}05j2HQ6i8gH3HXR`J;w>{rwSywC}C$M z&=i;%KGPs6L((oXz{wl#?&k_5jW3|Dk@15Hl$T#9kks5$D?AKbh~n(a>PP}FO6S-f zvBQTa^_2oi5uAo;>|ELCc+S@fBwA<8UmS`h?33beG)U|!Nugo#ikoBdtpbVkgq9N0 zQ(9i5?-WSnVFkH-k}jAz^>zGW@Uu5;bs6LT6_Ml8y-|k0Gu><4)sU6vz^$3V8@us4iu&Yjq?Q zBrGS%*w7{rGlbm~NP~A(&3T?8acOo}AmORwg@#3w6kqKg)se71$cbb4P(Vxc?4AlF zj+0QrsIsB<^4+}@$Q1LnlwEr4!sH0{RvSg zQSPBc!o!7RGo+LK6iE6P@Ld+P97;SJ?5{yu>G=Z3inM}>4ycZ#?~3m^I1?jxX8U@e z1{p&Rq+FK!GBX^cK+@-wkeG>qPUBvAumWk=R^fBWSyNrMhxF#lf4X8~%__V3D!bYa zk2}kL_LFSvC*^3i+766OtXVTMI^N$uKAH`UkM;Ktj*M)_e||H(WwFXG-(=NDzTK}U zRvSC|^Pl(kj|>kC@ne1~C+06my%Kc6`0%qsd;hdNTg7kp_va(4R@r=fXk?hJkN7#&%?CI6I-kBsvBj9v1Rf%67_dvwEnY!iTV#28u|&6 z0t3wl3q!nGj_TgfVzmy59Xg&tyq3mC_wLlQd~_sRJv6*>ps?Ey<(Bt!Q(oT2d)eW` zD2B$?WaIf@fB)}>%b``go3_}j@w3dVl1p#?%79tBCL0?YsQ((5PxErp;c%!ESW4^z zkLlfX#u;oiQcUp0t>8FQ|7~Dohhh0f24R{L$3tedQ4F7~Jhpd-Y3Dk|*OIN|t6FJ+ z$hXtqzdBpfd_y|@_O^A{R@s{6f3xiOKd-$wzm)T^t4Fq%ubp1jIIz(bSd!K>ia4(K z|DAe{+`+cfiXL}y&au;l-Ykr z?gM5~sHBKpnBt&3p3wXI*?)KH@rK3*X8*Ox6E)-tX?{T20-Am9oT&TMqJVqW_|&K; zP(bs^wBvB#rziFPyXM%fSFY`bP5n16kpLjX2rxYO zMdvL3kofhuF`RuY1+foy&AE#|qzLLsj0A-1=wK6j-r^65hz6fyj3_^%P zPiwsGn2^w6(~F$xiplVLuIrf=ruvAs;PX&?z)69U{FS|Xw*s0`QsAR@xX8K{)JW^! z0EZ&FuO^TJqN{rIMySwsDpNv`wx8F3v%i1qw%|r0Y_>WB&0mv!;~*XH>Ec1X8S+7f zBg56bzwQ__?3jbt-ep5Ev1)vXoqi^BX@CD;PYl;L`w}sr0rJRsVV#l0kW#a2dWkP; zAz^b|?x5zhja^A(LN#irU=C*lJ|9^z;Vs*g9i?||?|)vu5s0EEM(sehDjQurkjbYi z?Sz>b@zxebZscDlFT(VfpAeVr-QsT@sWL?@+etxZZlYZ8`rhAlK9xB>*2ej^zSayO zCr%^S-IEnXL~}#$Z`S9y+&1=3B%EAQiIMaJG&lDC=SoLpUnV=;f?YFj=RZyiv9Xq@ zlvEXeUsZd}#s-Jj#SR8!WW_locS&@nad=bjP^BRTv$28gvsDvzfSkxcb53a95<^V9 z-Krt>RmEgNV30=5SbJjgOLr1_BHEj~vrh1!>0*FJ1D_`(o%t=j|2H3y6yb z9)j+^4zxs=UbpxD!veepI}DOtY`g}ISA+z@AhZ!$%;0K=i85`*vpc%;9w4c7A*{2N z!ww#n*PV-fcU#XD-U#~22>k*CY5aZeTI`Wq&ovaqwM`v^M;@Ca@9y5eTenmN`(4>} z+ks|APNt`rP?NlPiOV#3+xVW|->=8PnN5Zy$;E*a_=&Xtz#!5?78BTed-v#REJ@=- zYj}m`PsmL9_1~wh4>VaBi2iW#gA^k&O*XTD(0agMU;>%^*R9 ziI}5E@9RCN!4vnuJsAq`s5!P49+t>cHnUz1(@y85x+-z;Atm9NHv-uTbo@+sQd(YG8PAK50`ftP6q`Po42 zKxFO4M+Qc-9k>MCxuS%I$t3xp>G}TS3;teB-n#bp3OSM(XWQJN+ZPxStmd2Zbt z&u``g)A3HWW)Wdy;0cOVFs*k9c%JO`3Bd0WyH4qLLTimOf2w!q#e9V)U#9jqILC@Q zg!NbxU_uvvy0@Ubnz4UbJ5Xf24x`WUjPtj#|KpDrz)m;@qhSP?@Y8hL&)W^Gl3=D)AaFt-Jn z{Ry&DgdrxaM1`Pe%nQB$-wb5iUU8Nsz=uS_TuG}OXkuuoU+kqKKdolkc7(RtTK&{o z`%D*F5;?CBX- zFTWXGnGFy9v9`&q|3f3#n*LtmKZFmOm5B(mfH;1+_u)CNW8OEUwvf!Y58b$^_BWh{ zd1XdF63GS9$S!}ScYMY4Gdz$H= zS-|`cX&s4>^jwJDH+zp?L(tify0r=1*0xiWccG7y;gJX&v4$Mv}5 zTd;!YaBZiDSf&)Zup>ox4Lcx;-|juV!dA0g)XbJGzk3^nSywiKu z`kiRox3>@{I^`o}(}TPgmuf0f$Zy{5-K66XQ=d*7QwFa@7I%v}9ilW$>GyiCXkPG) z4EVINQg=7)zrA&H=LdkS z=*aNOkw#*j+yOSw@Eqajz`uXL_sW09XO0#hg4G&s5wR79=3?3T_)IUoGxoH|i1 zE~_-HE!cBA#{aPQ+JC-xeVly;gp;;Ak4VFy5TTbIZw{uUANB6jJbf|&6r5`H_U0Qs zrSLP$zc=6L_IFgqtQYzQI1KynKmCbqF@E>`<(Zref<_!Q0Xy&dlwz*V)OOnTr|ru7VKm?WE-i8#pLM3qdv!|*ZHP* z`wDkv?u_FsmofQzG_#Je%Z3|MeUTz1?C!qp-D-KOcK;8JV*O; zm7{JV2VFaN2}ia*?eDK>XCo54Bo}f&Hr|iDo6dV8GxJR18Y_HQB)GIXj>?_-j-2;; z=i8mkafyxHQ(Izhs$!%)ugJ6|;&QA^5%0KpxO3mpi+O7E-~INJL-@|^3UNaaYsJvp zrSIfmU2 z;jIS^O`JLhecMtG&;BsobAy~k0BKQN;;G*vr*)FO`gUKhd(k#|&VMhaPK_}ZkWdS8 z17f?B?cI0F{3oJ*@n^}t&h{GB)5P_ELCq$c_1f#zNFR5e|LD?01PQSW>70u-{XTsU z&VLniyjm4*=VDw^`-7nm0Nv7D@=;>y6X*N({jr%6ZL+Ld(w_N0=8n+GFQk1+BHFX$ zRWqg~hELP|`hMB*2y@R#FrX>R(25=>9M~_#{(Y0l{e`@aSsuqW^`b@R3Ps~zrdBQ1 z)YV;cRxAqm_b7-gUCbc)M#%wv|1|yfP>-sA_<#U<;6WV4*>2P{n5Mq~x695uUIw_H6Jgo1%DwjCNJ6P#{clCPP zAE|?l4}4zC$k^OtTXcBe_8qC=4I+yf+0jz!-ehFQ`iArOC_15t+u{%T>PnI`x#xqB z59slY2#o$pw73k9==)C{2d?jHo&NsHBQStROBjT}_-;FNrAf_^^9}&%T{8eqx?xE( zA-W91nPd94ogZHl z5DZKz2(}VI!LJ&E0(k|HPSJVTqv9UpHfh{r=RK>&6Kb55Je=Scb=i|7@8R#O9SuCodq&U70YNnVM%p$Fv`8A6zo$H%hu69vF|^u-_bW7!_;A{_7?ce`MgI& zw=g6yt2n9eck6s?`OxGs$~ohg%rrp40M;N4TauIe)`Ng!grti_FfAgm<14dM`hHQJ z&C@^a+i>)N0@nj_$ zKd*25=C!UGDOT2eZN>%$v(aJ)ghO*ldzCjCVH~Q&j^m5@fT!6e>CJKG_B!yyAW=Mfb5sH-ZZ7Hj_tRdQCM9Hw zDO0-*Qx@a4U&e_0Qx`{h=hDSLYuan3baQt}<_njuylnA@#0UkUw)kZt`Xr3GeDQ}w z8jhaWU@Jn+f<9JP^i3KGJo!4ZL)AH~oID0?Q})qN_H zsyUo4>M$MF{5x28^NCSZ!a|+h zwDG3~S+0R=SS7WV=O$6ERjr&tmYW>B3D}y=oY>W|q7(LU?Zac(0I)IfkT?f8;^57P zv0ob9*!RSGU&5%Bm|UF1`uizRHU8X<3!50OkIle1g2YL}!i3Tlzsw-Nsqeq8^D?-4 zXbf55Z*W@_d!fI@=gW?^^K9j&jx_#tKy1Kj_ZEpa&CZFsX#R$ASbTHeo$GyXyKxr_ z3ngJ_d>}`WQzvi^Lg-^U^a{31v_>-iEq@_z`VK?mgT-h~afSmWdo-F>rkKBxe808t z*1w3SQDQYY(DeOSLPT=Q24-YA+KoPm4@3Hm19x21tCsQ(uwLf)Z5~#WI z6_VTBj<=5fZE;2?ai{bmQcvlfegCn(v^3vL*03p@*!h;AhGUH!9_U~k1hgeaxnodz zm4&(MFZRAQ7`~1BM*rZ9mT>r7p&h52&fSz_JKVU+5rQ1L`|krO(&o#MiVZbcLs~Sl zyN&#N`kr0yi`sB8!`Le74-m6!c|_4SN}o(ii*+Qbq-uQc-oBUqf-i5>;`KT@Brc|H z*GR}mMU0leWI*Zq<=wXc-`j?JgpCX1*_8>Tr;?&Wt)*R<-`}^o!{;{R$MqjfT1_=W z<+THKSC6JaWo`KyC?>|lV2KU2p?c1qUh*Dc_`o8M2cbL*soTPZpmU=eKiJnK*3X=9 zTkL_3#p#aspq}(@+<`WyRFt$nUP3wQeRNQc`%qt#SihjdH)!=U$HzLFM&~fJMT1O5 z;NiY4J6^-qlUtrynf0MpuxYc@DoBW8CHY9-Hr0;R_^nx~^&F8~#37+?Tb!C7g;mk< zsI3PyTjfriA=q=Y(K|XGr~PTQ_#IH0aD1ie+f^>*^r(ta)YG{ z(J!6W%#(dhYW*DF)69xlyO+mIVEe6TQsHS4nIMf}GXeVsD$-Mn^dZ-Y@H0PTLP#U4 zYd}rZ(meU;zMXsW3Cigh0XH5;t@c&_a}_&?xzHVCI;A1&fqxRdkq%|2_?f-~s-46f z-)q~uIp-NoDg@f!2Vow>PAW#LVv+AWySTSy@+8{Hh9&ie{kgvVx^-KA zGdhGxBFU8Yn^NGoQ_!p|cCy5v2zXxBypE<%L&NyR4~$EfhyiIPFu5=32x*&RfBIWz z**4D4ID^(iN>!2<1@CiK9824v7yAC|!Vcf|%1jR5egi~Fkcu;S zt(|49o6vq1Fyr!)S2Lvv7BN=w(gryT>&rZ89X}U~)X2U}HKSfdpXukRoW469rrj2F z$_=3}HI02~Q_fNXY4DYngkeTip>-x5L$TS59L+*(Eos{phvoRA;lAKdHqQ)nhF4n> zh8aV*6;fuAFc{i$(@jm1>M)Pv^0mIhn?&vzM_Tubs58trtreTLXjHaqf7_-dUzmP{ z?3!uzjZYI@=S2Yf`lM{2^NG#zQM7&I^WW;$w~u<2#fkR02yp`_C~s_#vw#>&!%iBH zg%oz9w0v_?ys%F9qHV&N|6a7e@nZOaYMS=ak6W>i^ylH#Fb92H9K^DU%(6+Lyr0qt+#KCYt7oW7yk$pUi)ubG&^O?)V0} z>h{M=i!dk}w3dye8*UoB)3;Oes%I_rRh|%LMc2d9>EC^bODIwdk-mqlb@97>f8BUT zXFbT=vl|(zQd*GF#SUUto85rT<`t9_ZRU5H_$8A z{$a(wupjZOXD1)CFZ`fyuk~8K+ottS%lA|QX?tMD=7)uk*$iqSriLH(?Y7wG(jH1o zE;80etiVjH1x-&P`_TrxCp5++!i!>TJRk_?$;TV$o|wWfX&hAI{ucUp2Y=GHMMoZP z>%q^IgcHXP#+XsyrVpMmGvV|wi)BM>phP`jNh$Id>6W0lEm?6 z^Fu_Fjq?dXi_7%oxu5rK*71ZJ8+a>@FPn_O(B7fN&&Hq6PbKU@mzuEhe9`w;4I1{? zDm?G8thb{p>2+6YbT=r<26<(uX$n){d^yi==Xl~IHlUk_a5}!4^S51Ye~dnaFVzrq zdtcA_+g^ZlClNs-EF4^0znS~DOL|fTbmr!KxLfhJbN)7DA#9219Dq$!fD-Gwxqln4 zQa>(e4omr;ROR<`{&ubAB;AJSQi;`Y@k8ITsrS3?B|R{R97xi=SfG{=#0{N<$z_=z z=RPf*u5_NP8}w^YNfCmW*diZ7N_-R_wL3MM0ktC^y27dD-Ih5hXvy z*FXy(+=QLIm&TM+@Z&c9{j2COIf0x1uWJ8Y{;OrbZBHDa-9Xn#Ut@fm;hg9DEKTM{ z%HilV$a_W`o77E7OVe-Kp`G)-OMh3DB;1%>+MIqlr)JvEb6{~u?@&4zV`7%>xAb3a zJTaPWyk=-%Y}E){aQ-4bNBb}R-Hjs?uV5NYdx-IDXw}&9OaE%qdY4oAPs2R492xlk*?aHr z$f`5ndok~?im3m9`N_*(S8Kf|hkkW^Z$mfG15LN-CV0j(niKYE)gY{SGIn`RLa2{8$bCbhA%vt%5rMYAD-cQzw7bVt&!L>o zA#jqL8O@l2v$dfW9CDQob^oPfNzdn8fLDx?=-g%=6mvj@8wKtjc}9XU_l!Mxt~KSb zBCEoBOP3CS*I|ZQAQ>cfbPuJf z7ygtSBza${&s)GK62me8Imn3zgVzxXfNT*j>i>= zMfJ)-6%3z9RQnw9j6!nAeqc}qiz%{$N1GNY3?<-6ja{;}u9!WuxifsziBX|~Pz&7> z-{+vC&z{r#5bc7oZc(bMht$d zU2#!V>N0$GR&c8-B|1p#x#?I&c{FrhGxoBcwOl)qpSA~4(Q;{NU5}lp^Q>EItFRa$ z9+hZ#T7n>PUpw|-&)Tl8sA!P&-B?~)7Z4P%>T?ID$kOtj?(4jZeV=x-c;t?^XG7s$60pR^nfUk?rck)9XAo5cXw z@Lv*pgeKg# zj$vw9PZG5`J(dDJ^+v9*tfcYNyg#->Y1Bh(NkGe(vgTlp@V2o*(FNbWsgf!s;vtYG zaV_;A@RQk4?mISB(s~!-;XB9bVfgeKzbwwH8R|caIyEl$DI#rMH$2WpSxlV>E3rg+ ziu)1rO3u4BRjEp;Qaa&r6lp*%!09$T@7-ftQ5TKfz$UZ^aS!SVVyy4kQYj#R3GFfr zBeE1K3f?>R^n#DL*$eF;h9j`t5LgU4HY8Gk$-Hl@yXU5O!wNax6Uh_P^Bx}if3sIv zUCBIg52ycRyCU@vq{gL&_!)ASCXvT(tG|Ej(mG(T+};gbkn$h$l_g)NGH4(khfG4^ zf3+&wKKw5Pv_SOm0dkWa1%wd=%JseE17o?kV=28D!nq?9htOddEnn<+4&p|LQQXkpjQ64gLLGX$a zatJTc`sh%{pzf0ogh1~hn8wA}`q;3?AZDeAYZ66*D<3hNKR&!MDAGS77s>rMM*2#9 zV(ecxIbfpd(#ksIl6=s_l_Y759N&$7JbiHw39$K~+H(u@c;!T?w|lP$DAGlsN8H>r`?vhaxUC`rCa ziCG3ogv#xS6@?W)+=T?^E*~7~RmR8nI&K?R*q<>na*Tuo4usAlj@cFg@ zUJENna+RMSTWOlWMFs1LFnPh$WeuK$JI*D3gY z*`yc@B*rAP`^8;XL$KtStHV!%LGEL4|D|15Lkkc@1Q>z?M}p3W_2u1H!w9w?!XG}U z5zn#guk5-Sl1tTn-%};<^Xa$xM|BVgsnWy1`#$y00euhApY*~=b{|jiFF_n7DW+$ zt=}8|BSQ`GQaf>pRk?%*lkX4zk#uN66hM@EH1fFi55`{9@r_H?awG>wBzP*zjhC+{ z$VPB;z?&Nn7|s0Qn4d?Ts7_KiJDs(B7`zkkHGw(#p}uTf4qtIp~()?P>U5vQ`h&^Pj+GZJcMo~+D|Px|z|^2gZh)R5D;^OL%1kl z^og1L?>4cVhF~;=auS4zkW{1JkKMZStt6*HvqIz#V-mwq_7xcR_z%0MYS@iyxRK#( zA&C+#_~Y=`c4cFut$8F10}r*$lXMS;R{|GXP+SsC+2 zHeyE@_9zDHVpkMee;NMELU9854cmiqqVvMyzwW9I0pNs(PXvz(Gb)6N|28%ZtCGKu zo!>DXSy1j!Y+0+o`$#DQ4J%d&7B65QfVK;WMX(4~7z9_0?}FGzF{+?u!EiLd4Mxy& zbpI*4t9D2eVVr9EkO6(zeOKUA40b_JUQiFbonR%=Npfc0y%^-Wz))rF1O{pEf@9WTK_y zUaznnBtBEfE;ZC)Fq2VaJbk?XxR(q3#?nj#!Vu+xp?l-_SqP2zU(+`YB4pL)XwoZK+xiB?j427`&m5 zQfhF^_>q3f6F^y7nxM<1v1@8MWqwjc)3G67JGKQ0T8jexS>po-YKV+2N&$k@C;%M` zum?(?=)8q8qma@bkGOIA+gJb%29$Lu;#x@aGjBwD&Ovpi}FWfWWFNHFNJeKX*7 zg}3c!Z30l<2w;Vn!r=LqlK(zjb$4zq;D6XQcj~!j;kEpe&bf;P)>Xf9I~Q zKj~RSK&s0DN450b&<6Mk5HE1W<(5fO&AEG*x1rz)tTU)&e9;Ctz4*aL_=LgYRCe^z z@%QfP_fVb&^QCs+X3urY(ujcTuH$L> zY^@aJ!abB*byW0Fg0o*Wj>JsI`IYrft~k#8#1|cI5vtA!f{fh#9~}SIX>&V_P-$a3 zT!8EAAelM<@4zxxmRxD8F092#C=`jUauf(H4HJ1XcznK%L#^}b|CX&3day#8koSp3 zjb^;&zhx`AB@+@f6VtLe9D3@t|1Db?YH0fb9YePzR-lhw_usOWfF-QZR+fodZ-5*6 z>&KtedC@K|&}B)LV`bT!&fm>$(9J3oCec{v!`yWBQ1cAu4ddr@E~2~mGQuHTw+yc2 z5$gE5|Hkn<``O60(3JLj*9I}BOpC6$wdh|&5T8Mm`h?FC?V<5&`l(`<-J}%k>fCRQ zt}h~8jurq?BRB~zTBPRRv|}|P8A7UoD3|CW6E1!8`1RZDlfKR$jXo(KE4c8w@PM$I z3L}Dn?pwxhA4O$43mLMNmg^S~$>p$tBXLMrCP?1e-x%*QfcomJtbWJpF1}^$Gqe_) zs))}KxSkk;MGJl6z<=9#Au--YEMq$>N=JF|X63fJ{C=<)0O>xQ%x2BWMBMnHq=h$I zZsTmBU{?Re>fvO6aI$$)qtt4F?JyBLc950~-#-4Qk&Kz(@+>S`*X}$R*S!aZ-}>^1 zM7@Bm0~O{NpEiIu?-;+Xjd@Rz8Oq2V8Jx!`h0@6VT@o#&QP?g_;w-k?u*{QJAu>vm zeBvbSB5(i^jG-4pgVK$6j{nczh$0?4_sB;{Ntlk}0)SL)XqouzdBMASeqY$#X=N^ z8Up@^J->haF?}@eNUj>yHpS@MI)dPU<*+oyMBDwqD4W^dqYSOT*otFP{-FA?<@(_G z^ETD_%^N8LD^#j7;eR%u@gX*`^ z$z@ahR^Gj^J-}`aCltg7S+ezyaNg^quwsgLd99nPUOmIva+tEwMg_zJh6+4|oqV+W z?%J{hbx3sf(Zt3$E7G0fi)TkRV2ap4f$C%9A8+ofVq2JBJ-NE3*pq8&F*sQV`>ZYp zE9htdo$06lI!}v!pOS5!_@o~dtkKc>)7j{YnL~ohM%XR#MK~FG7x=ejhzio{&b2+D+g^wg?5W*MDlfr+JFOwu7oTmJKLVW8m=V-d}M^1UdjtkfU(L z9OyH>zaq*Io~0D%e1&zV{@L-%I-V`r+^SgVhSd|2zB{9OVlM54x{RojlWspifk&r@ zQropO4%sCC$dw>~^11PU>-gZJv-^GmCqYsmzN>tLA)ui*6@I?w18_dv%mc(K2BlHq zUy?*K)fdL^J*{ICTKldk6rN|_SEB_LuZt$+q2Oew&cRe&#r<^aY;j_puZObF;R=^^ zb`qmyMrZ~mrekV>{l)P^9c$Wd?N^xVAUadn>)^8GxxlV5H6hIJ#a|l7SV0c=Z6w!P zTi%Zdo7`I>!p;usz8j@FSj^L48XoNexTmHIk=~~ z%q{3LF-elPg9QV)2QE{*dt>wK@De$cCWwg zp`9&%lu};VG>o80GQppLr41eI8{+MnRY|Ewe#s=vdB-v~{WqAE|5Poa?@^+P8sC#S{_MvU^N0+P0 z@dY6|pRLyRS5{YowP-=q(xtOOu;!Ym`Bev)S)k)}?;)fwLYLnjU(Ssi(k+>SiV}~m zhpQ|LYwF_k8Hh(_4P9KM;FeEkAF4k(#s;BQ6|E;7Fc+3x27o8eMgsCX<0Eqg@k4xs zF#iH(otl7scid>>7)GCQmZG~deN)9!iix)m^TZ|U;C*j&^-Wl8TnA`5L?Mkh-}lF# zAcL+6(v5C8E8&T?xpQXENM8sa5iRo?x9im2hxw6Xr+AxuGQ&|xVo@a5ia*YWC)1T0 z31Hrn3+vQonG1}-loZqt#;-nY2v0{dTOEg)kA_HxieTc6OIU*VEjshQ(tkLdinOW5 z<(0LCQjZ`rBye#^o@krcy7Qy)rMbfRNeI9JJ-T=AF#OkFWCYk zA8Z8V8ehvl%o|yzCwK!!1cMdmuZXg0f#d#od@{Fu2fBu0;cv%>F657MmBFrTYfx5z z?_0kc-?WfFJ}4-iF!ylF^n=j<{qSpzPZHrMQ1$5RqSFxkVfc@c6sYoXtdqzB`IY{s94|Hy=$SfT&t>WJ}i-T5<7s$$VmYiqLR^m9ZU$g%@eIRRsY zkGt)I4ExLYv3$O_)TGUfZ~9EJj3A7J`;{w>8L|i2e;vQDpJFp{pZSg-T?i2D;|v#L zTEjLG+kYGXr@2dd9Mg;I#rmrBY<9_zqY<~j1Sef?J)sW+KK?uB$go;nl=8Aoz9E>; z(w&_naq>dCU&ZM8;xg*SS4^~bHyFvLfiZE6M|Gm%4@6_Er%YT_@4IsDxL%dk*Vpo) z;{6dk@niHHaE)LEh=VI9j%=%7dYj}#g69E>BiM&)iSyJ_#})h4sD`}*O&PLXAYle> z)WKB~7w3a6-}M_+Y3;bYzN^JNEqaasG$Rw=K0O33X`5G1v~0?oE19kXaDq*Q&o-j4 zIkBT_8ntbjfJAqy66Hw^0V=DVW>QgGg$)5m4$rb}EP4F!+KI1+xq=^$gM{AG@A%g74bqxK4B)o3of{sCq;@I0H zWU(>qBBRT5b2czhKpglS*91`89Phf%3W->QMWj&W6FS|o9F+as_<)DijqK;t%%W za^u9~y4I#Npu2po7}1tY5wRvmo!Bug_olW>VxzJB70Y3iR;ii8~4_ zku+#BkA2rl=JqNMnW^pT-o0n7FXO|ys8;vI!3szHxib%+KYPxZEg_fo-#)yI{{xQV z=?FU3@WIXespMjdbmQgo&_byph%h{5B!-&ADEwN_n7DtZYskc|sfef&Xo^_j8d6!S zSC+H|s{jMi_mP>@+-FYwuhxKv1UX9a4BH3DCW5ZLJ zro@dPXg40@Ynqs$dgNv;G@HX`O$Z}j!W^Z#Z74(njw+~?%J4KFP99ii7mGx&GS8kk z(6bC_E_{E0;f=Z==Ps`AF;SGj&~@`U6Ts zDg0h)gwa$?O~i76$W#4aB+Yj?|EoyY*CWORiPP}#+`9MZ*=%8NGOKCxLD?dfs(4eR zGV(|)3eQDOA4orVw@&=~mMfOx?dL9{_{#EHHPduss?dovo^TY7?p#pA=S{?0euT9B zT$FUV+@~_CIBtMUN||Ud6`cE?K5Yd!m+ zoaM0%a*5dKpvVJxJ274~@!g))=oq`~@Z^rT*9~JP1HHBzOfs_6c~t~g;(bdZi&6)U z)<;=7;_8rD^4OO)T=>c}inLndp)F#&E^e;2|Kf>X^=xRDao4-QcdXUr*9&qVRGMZ0 zS~m#?n0HOw(!jtJK*&0PvseMTw7WFl3Q$gSIY)A^Won9;qOZ@8WuTaUj={3VSqbMO z5$N+@GVz3b=(Jp?ic0kybuC|Q%>42|fNg=b2SyCYJUL|S?w&Zi90Qfy{x1jjxBvZqb=iRn56(6jyOviH z09+D7X5T~yHT0dAPu$%{*L0a*{fwtmq@T)zodBkA7MqS4=#qK7v}}pZ#P= zJAbz^*UGQS0jdaT5EnmNC$na}a-tn&uQf*7<~WTYfmo<H~`vViy(Q2Pe~0&IM`}J=u20>Oh6q3!xllMi!Cu_*D~e=ZclKwN4+JFV_hL zI3CN*bHRZ2NWh+;EmqF}`yZTWO9-rYX3+s%#(e9-Reo~4pvH?W)}hYoCi#JYnZQX5Mv88uEP}j5`1)db zEskrpp6JeD5&Q-_y<;WW*+{BKz)-A+kJ&Y>Y5z#4$@V|#C!xH50KYOEAR9VisQbbsZ{Bwe!-&-cyQuiB`>U*qps7>=} zAn*Oo2Z99ual_EL_ux%90QFK)N$4XlbChh1qI&ud*Cd2RmO=cbUCb|DVzORCep zkbkP}))0g0!A?fk$h@NN6u)gk6Qe*2J~13M@Iz2ksG#;rbz-!XB#sMl88bGXJCbXhEK%OM=Zp`jh1I{-wSJVx@) zp*@N8653l991M?DuTTpKQ zMDMSl{Dto_fjU@QCKT#V_WlZhU!2k4V~I8lgs)Ha{tByvjp)Cw(FLe*nV;_c6$mNZ zR;-u+J$Nj~{7mn!MCf2>nEjHs^EHm2pY8n>(3&1dOU?$d&VrVFZlVvyj^}YavRt%i zLFdz)&rkeE4ksWM)NmoKke}lhbp?x*E?8aJ@QKW)bZ%c}cKZnYO8)UIR-_0ZLSb79 zu{~z%0Hw`!T~EHy1?kmpsqMvN{Nlv^21KsdTS|Dk#j5x^oGJg1s%1Yez@{U4F5Ynt z*&fgP(!?c=Vlto^Imf!YQ@ZF9rbvJ6S#$^q%8GQ$B9I8o!2a^qYUm^HiuSt;l1F?m z{I5(LYSi#Q3ai+Es{dQhYU#FcKXnsZPcK46`Kv{FEIwN(FETOjV`5W1reI`!tz2F! zRe;6fwJ0GKtTT*v$R#KraYQor<#Z1sgibS272B65nJmJxqrn>B@)>)6VGqf0cx z39WBV9LaHit2xMZV}P?~<8k!W6c}F3u?_B@$+sphD2nWqdg@td00e-Ptm6_Qb71s; zd!jAVbCXpKl%QuYEddgTJc{w1MyW;X8@JE;t-WVm=>XqH8{5VR78QH@yA$X1OC1yG zC3R`TWEp`JFsq!zQ4_*5DgNHX|L(u2WhHc5EewDn8YmJ0ro^oG`x9sOUqoT`O@a-V zXW{6Wkgja~2NM_NFSUI*px@3i6Ff~2q)&*fv1fWeoQMVl&?|f0*gm3~HbQ{_tVGt} zM-yr=Pst#BMK_T-c1>R~^&wmZPWaGdXVs-FJAy^w+Qi+p5qZ#6uK;- z21fE){PRIQ2sp)t2PrMW2iC?N9RW19=3h)4AIy-e^Iz&Cf+m^pFARwA1R#*ii@jeC z>Ph*a3szQAAE^aTthCv}6VC>i?YO_1s0^k}!h+2Ktm3motAuf(!Mb7zOe~PGzaG@H z+PFkPzI72Jv)KL(c*pi{CN3RJyEY7S;>YRaB`CnzCFFoCxKA(n?Qot}pTdTR=?->U z8ouN)w2I$N{QF?q));^s+i^NK10RXMnE2Q42iBkzAf0t$vBoMkGWIb>BD^stH2yHC zr(Ig%sK4QjF$~=RpL=Z5bv(1lphkb3SR73EWdQQ##~FyC311ot4Kc!q%Ouo+2dgImx=0N+Lx{% z8(LRiN60h#UW88=QAU7F=3fW(L=XqGvCV1{g2(1=?Ls0ZRBHx*o2U(@jon=7P*H+Z zhG2nDK*#sJzYpr6`6fVcU7eVRPP)7rMB)g;+eDl*08M~-IjakD4OdJKsHOQsAsW=y znjQ*s3!b<_mx^?7Y`RaGTpdjJ<`2!V`Att{8$!Q0Vi}DhH?q7dC)Wr2)LM0MQ5+ka zo(t99c7UMtw$%JW*Fo{_9{KeR*X? zGESO_cz~<|9LY3Ix2~R?A58h#3zXHyCZB4PEQv6mBi(cjL!}OTVeU4eUrRTZCPrH! ziqoIWj+Jooa}e7yT4(PyCSEOKV*QzUp+RlD{ zNWV)UH3a*0x9$^J7my(bh{<46BEU@R; ziC|9)lkRDg7j%rCA!z{#!*BhD$@3b8 zb`2Rd7pERCBg+BX6{5ce@fo>a`{|QMvbbX#5waN1)&+!`E=RSIuwdQpwXi;uaYro| zJYUx>1L#GPpdRdNH%>mfW06^)-aw10k;z@aHBU1BgvLl___le|Znd~>J!5hhtlMX@^<)z(6RzIsBs+64s4Nw;ERvs!2?&8$+z?RK z2UhQep1Os__>srfp?(}#R7*gpo|4E0#pA_%ti%6xe=(J#e2px(0Y;nQ+CzihfOYkLCkMzL=>`9jyNwV+O;Z`J}oiiWMwKa6V$to=9tGUi`et=X92a z%pTChz07{eT1|pBU19{#TP!&Tmyvf{Pmh58NJBn)HWv_-bzL~upy;fa0NL|L&=-kk zlD$I3AvVa6o3~A_WsPgIOmDL*Xl2n-v40_%tmC}_kv+CwF#MKACh?NMayceqb&8Md z@E@6wDmU?o)q$-c5n;V>@~H)te8WMf^T{e7)7#Ms07PV<2pWlWh{h&=$K?L58v$ph z>OAp4nC9FqQY-?~Z-Go=teK__a~~L_;odoUUhiUn0M-CJ=Y`{C>Ty_3t;EP`q?&Tk<`Vk8k(otv#}XZ-B$f4^#nPcBR7~4(^?NOyi83rXADaSw`NJj?L|p z%V1J~rGsfBc}uFyzHjopjw@)kMdT^YmS@Q!R|jK@&kjCr7#x_PbN}QG7-y!Uq8pZs zqF>tO(d&}1C1hi}A|A7@Y9~dee0_DU3Hw{%>5z8weADL`kIGM?YcHF8TC-SrBU8J{ zI%U1VK<=7?r&EgBB%l;S5FLmP$E3o%mrwpjyM`6@$X-NQ#Wp2ZxBE_GkmjfX2i=6g zh=?=#=qT#pD+W41+dDphT0~I-z>$d?yymJ`P9ktPl$W0&Ld%_N5iKSn$8#M86v234 zGPgA!^uTNMb@67o&{=Mb5IC2{z=ZlVc~19PRNSOC;5B3h889HAh&Wsa5+q%m2Pe_;$1}B(JZk8h5G&LCjYbDmy0>xW&P{%{0{aPLXE?k7wNVLnL0mu{p3P< zyW0SiD*xeF*^)3DaZT5TW6gvTJgGVUfKLl!2Y|HkhT%O5%|9>JO(P%iJS= zrhmBMQf|r$lUgIoL{T4_Y$&;l*F{6Bb=XSo2+H}oW&_%{A$%smhbMFG+~#_eSf2IN z<;G7GqL#>ZY8o*)KR|#IL$QxcZbSB%B^bp3blq(1WLPdgI=LxP_AXNDA0u(z?!mhZaY_V zFh(}FDVRX5D*RfmW+7%LAn~DmfzGzfPfTuF!W}cj)W_OE8yMMJ?~}u?HTrIxCk&Jn z4X%^A^QqxK(uMD9dr-$r6&bPSe|q?j1d0QPftd!42gO16GsAx*vW7$eJro`Eh~%#G z*~$N$+sYy)F*<}Ni-d6=G(U=|DxwtmiptmrBUhOIFdpIFD2=lyf)d<}Z1Z!IPZ)9q zF2ja~bhk_f^a3&bC1GiK;zebDei9Az`ozzD#z=r=zZv#&%PCLu69zYVC)kSS7l5+# zNXustB)P<^TF)pcv{J`l>*Jt;_ni@caq@AkP0h$ht-sH^;7Gm#@+L`9A`>RtUCqkX)qC*1MK zGN6D40Ve+DXdh36(HD8*5b%p{Dd$_07xr3kWIXg-XyD?Th6rZj8;h=i^XSZSPf7=4IjJm#!J@2p zDY#~Rx&9MqiNnhmmVV+WSN`Jyv;c9^fiq$ws}>sHo4hZ-&-BsTMGUuN7`3U|1){#M zH^)mU-)$^%SibKP)FycZ#QOWYxULX&W5P;gg)KQK>pz%0R^M_O%jAabtnur7^*mDF zELlJ0;3E#mSYV*(AF$YoZwKB9Kb(A0OR@R)d%v8HUo95yrZ?ac%QTtrB${YnqW`E! zEwomD8;`Fif3t>{M*vt;5GOj@EPQa>?0-CYuwxsJG`g=?G0LLc7?grH22M))+E>c@ z$>at7l~w-~)*oENme+6>QEPyl)&e06~)dcAW8zd<>CHN(#`Ew3N+v=0ntWftpDJQ2mB%{L4 zy#)zOn;_0FIKT|OGW9%FHlEA1F(L*uF){!?k~On_IeA&{%5=|(ckhZkHO`F!{NPcN*yNn@UALE7$ zA|59UOu>FP`IyeVQ7Wqbp|-1-?i$z*BQDC7kKmI1`^MVQrhY~LY-$;6Q&8hw6|0zI z2GF{35r$2L-&pvE$;Z~gr7f9RIav0rLHU>`Sqm$+5a@y#hD6&RcdV6(BG(GF6+{(A z1cvpeLADZ=*u<3b4H4hh|J+!8+q{B)-ev3Z+oqt#yDYDFA*2V65TeRLLsk5j#_HRq zjDc0A6HWjF8FbSS>VaoY?)k69>f5a{-Iw1s-)wY6zWO4WgFY;JGd403%-X*VZTV>r zQi8STh(8qcBmj$H@b@iY&PCHc2ov9iH0C>@bH&u-wm3Jl5yjjrj}$DfCV7K~LY@*9lW1OGp?LH5k#0xN(zTXRHWv&H_fKVUKmw zU?(PK76koSLL6n7*lylD*y72r8VPDJXpA7~Vnol_T;p9Xhl#|g!E^*#96xh&Uq>wm z#U++y&A?GacW>F;*OAw?iDB#b*@|Ci@~q8$Jt7DWhuaQNLS^dd&)(eEV~jCbkz)~l z<5;Vnv$?M;A2o`=1kE22IgYjGPUSvZ8}qUKq_W#4a*L>UQ&@qdf~j$*kHBb(nfI+z zxzASfgG-_6oXcFgedAnC<*i7=3Kj(g|9Mk|F+g)c#o40couWev4y7W%7f32S7qvZ_ z5pBf~V77w^OhTe4vI&|X%K}4RfBsbAx7D#`UG}L`RG>pO8;6eKEX`JL8lj;>>+>R# zEw@b#?ktV&0FciFbuq57$XmW(2ij*L7>ff4=?SEzO*_1OfbD}??bgn2};=Y>;+ zPuN!8Uv|zY`-C-@(s+O6GZ7(w4gWkHNPiTfOnS%E)Bm3i17OPoyrYElhB2QCIoGxS zH~e9P{mX{Gz^W@-!)*B5q2NS5o7xq6Ce!VBwRTeHbE(C^8P(>t=b?;&Ee_u}RWVe@7o-F9Cv!fw; zg~^Mip41_|N&ckwbm{!v##}AOs)_6gL{ZG8h{NjY#Z%{WE~5Ls24Nl_TO%ZqfVO1f z-8FU1X`Ra|n$l&Yl{S#h1vT1L>>)b0RRd9y1U*iY8_r91tR|8O@B(BGEb);xg1e`# z-)5hbW?w&jQXXn50&s&`3tNydoXnR_eYT&etw$;;DQWea6tw!IFca@vh}&` zpZ2Y+92H7uZMObrJhm#4O25&(z=88Zg)~AR3gvwCD(;#3RzD5vGV=QB9{Q9sW z^Z;bXiV+Q$(Ykl)>Wm{7SJ&~Zp3go@E_IVrE2UjEm$5%BGwX&p18^48%d`-mB$kWL zF(^6Bxo@W`Vw;9xsu;K*PJMuP@88LaM2tTeny!hU;mdZaB8f|;0NfMt6i^94^zx}E zwtcnH+-M;9L+}d-NiZK@F}0H{PG7;F(LAzwv4@wp_R6UqT))fU zh_))wa0^^O3>-08EX;vgpo||sFm>bh=&7akCGBW=bT4{pc`eW}eC8H|;WOb)=!37C z>ZzTMa;)&|ka|bgoTU7Ny}yDny&J=LBF^K0b}?Q(b#G?{3-Uiz@G4>TgaFOXsGexX z!{l(uJopU#IXD?&9JIQi;(kCmvn#oK?7WOR&O_(Gm3p-71`C7}d^D7arx2PTB>S4F zLmk?t%IGsSCGU`XzM{04djZ(G4+i)qsdj*2a6o)H!qia_nDwq_(ml&-csY zm;i`NVuMT`b2Se1H%=Ys7M;(kpDY0~*{{O&Eun+-;0@>>zxX1BEB@b=290H+2 zuZQ8H5+I3hn#u*zVbiy+4LxCE&4T7{p32p(Hmo&gRO6FJP|7Nm*H-N+LZ8`;ARI&6 z22mfqWy{5-T3nWfm?k7mg0}|Q)a0#2alKmGT)VV5fHk@+q4*%t^v+F1bl0S?-^j(Hp_iT$X$#y_At_M3DCn&476;{qFe*vhy3FATPL)I}rQ zW^lkWT=-Y<7YAEBv_S`Fy;##sq`Z{&r2!WYO~u4@9+wR);63ZhgDoBlA|X1#fgv(M zM&>I6EVj)|9Chqkh4=!Rn|t>js0BT4n_23BGk+1aBvt}P1xFyfw3ubdHwOL$L?#Vqyq>cB=Qv-mf|K8e7Esf@ehVkAs68MeHM7-Hr-HJ zUQjgziBZC?RWGZ=BrvjHNLxiA0hRas6AP&0$a&R8;+Mdsk$i8epy&_su`nRlRQb7v z1*8`l1g=zIe53IDQzMg8W<^1N(8bJ(2rDX1KN#JkQ%fLJ{ZSbSOx$&UIKoHcvE>js zfF8tF9Qi*Q-J?AekbTTlK%kgj5Jf*8-J?-LMtdCNN(~uk)P8<4x<>~XANmHu(@=s9 ztZjcfx<^Nm*lCfB_9KoKzVWlsJz4>sM&}jJHMF;o?fLoCf6ifAo+@?B%MQ_PFUlA2 z?GU^pTjM|6RA2-O^yC*)|GVk=B}l=BzZ6_T|`91O9-M6N-=)FodJVZJpYemh1}y25BbB?MdgfXeKL`D8ljGS_+ z6k-*K|HMW2%*F9i|Kp$v#uUNVNDy#~l_cW+?P_fBFrjn#tJy`h*UB7W10A}^Z-XirF+D;QSYL4o;WF<1eOL7-ZnS8+VE~F%B8(CHis=E(C=^X#!Elnp z&z$&x`IJEw49eXEuCIx40kmo7%IV!SKH~t>IF7IpmIK7Qt*1_3vb7az_RQurimeTe z8vuPadIp5Lu9~iN%IPmvR=JyBToZ@N+PO-t99{_?zb?veawjTR=vZC8wrQG?j}z__ z$p&Ar@!r+b7ni@)-$MH@$Ns;6JpW&tO2*cnT&WwWh{P^jmum)AGP)*!B3v#_oU$;1 zzII?G1Fgbc+Cq9f!~wx{ubX~iw)fAcAd%I|@y21G_bS-&t0l%^d2b@}D4Zs7B;@Ly znAaCiN7t&d6ddQ=m>)&@etPRyJ3O7!vKUIjY{HOO_x-08Pp=_;0wAy?-P8BeTff@j z>1e6|;L?#4MiJ2P?HhL0WS7_>GMu7I57;Hpo<4ocX=2sZ8YaWRU7`yJ&Y<*It048r z{Jb##C0b?K@8 zB(XfH^Q9nV7&LvM4Yu+?{pNB37nck;dd?Zg&Xk{K_a8o%{`27BWBby7IqTqg*&kHI zfL&bOmtfIzq*_^CYsQX3XoeM zv!@G%mDDd~e(eMvfhWaFuAkRZ-(p+8iY#jFxJu0)j-5D?71*kWo7xPUct=X;7u?Tt zrVD+mj(WYokk$}@TVp%y-8=P*P(OvGy1j?;!dvUg8IuDKBBeG8!>pRmoj#|$1Lg66 zec&aDTO5qftS+-@i_|dsU&|n<2s+AN1W1Ussz+!lgeDPk;JI}=R|V<2BT-kYtS!W~ z;PQD)I4G0AqHYo8b2&fgi2FWo`iXfsrSC%1GizyA&D+#Q=(D=Iwn6EWd2XR$K|CA9 zQ73%<^kqYQdP(I|a|k3Tc0r8PvVZUw2pBQ+=dgC)inxTAUBwLKkBwLWcZH^5P$J;SRwM|03vtp9>F6;cL(qY`vbZSrvB35KN3-BWC{^w#wLX#IZ1Smy65}Dc2XrFYXp30FkP62BAs~eU>9)k$r>6ba*u$v6>IlRUstrWHKs7! zrh=e?r2+nkrO@Nvc>nbAmJr1T)ydWh9sxC=*0RG1J_cM_=T|whaNP}-V^Z6=LCOIG zRtQuzbdww{@RX6fY=aSJYS9$*|;h6X_dwDc9zkKIne(V_}! z^AY_d{eYh}S}Pt3=sEyX{gtJ+-x`=1?%PLl1}F{(2^UzuYw8b7U)+oQlfgseRMr*N zPoj}D7C=`IE(6LSubLjP@AiX(os&MqG~%negE=L{3H#N9Egnb*dTKhpkq&|_p8lG_ z7O(K#M)e7#3ZfHcXuWo@#bet5%E*GPtTbTD`s=21HT1@S-LObBew|Gl@t$ui66m<+ zuBeRYpzTD<9U?GJpOPa?*YRU=TP?~UiQIJz}<-#FOUhS(aoFr>V=)cM$!JT%ziJ=}m2vhEsAzLw#eZ<_wkPS>1) zUPBr?3NA4roJ;a82!{pno2RcF%|%Fz#k0#$y03vGA#MUki1T3Lyk*qgV8bHyV)A!D z9`RW*-#VfS6g`0df`LI9j6X1!Zs@;ly5VZk1}it*Ifd3Vwucx=VPnQxV!VBN0QkAH z_O_8Fpd@7}X2&~h(UmE#L* zX})_E(Rt#2+_1Ax%u5($ezCGtk#iH~w_X%_oX!yGf&ui->63FM;@hE=1GoQ-xpQXE zJ!_U#R*1i;u)V0+uX~TqG6yU3042G+F9n2}g&`OQWF(eh2NM%ot!54-)Iii->p$^q zlbb7wvjNFEJm^gSUDN+-0g7-~t6ok7DUB*z6aW)lJFv{0m^&9atE02~D5jXBNJ=Nj zf7rmE92D67cTe9`oOL?|y@xwMG>g+c64w#PV>n6Cdj`8IlItfz0VzQPPRY6Yy&S0y z#+{;AZ6b5oK{}1jt*(cq2%QE<61ck99GE)Kc;Be!IUz=FLyqsskU-+`;pyf24&D4F zH|*2Re{6Roh%y{(>7#^F7f?WpA*Hz{s={3JjrR}sRmq`Dwp~buXnwlU2d4k4s~O1b zvGtWjbzo6RB-(hCywe^V-ld9W5MDc55c3k|V``K`c?SA*2us7Ph2;YVIWnYK{!AV;YS8L<`Qhs01~jI0tv&`{G-!royJgeY&e@#oj%=&9LqBN=roUe zHpA_>l1)TZVi1}HI}?CMQqIRXDvhXx2~6SIO|C zrsu(WEs#7pvK4G)mmWBQ0vr>EEwZaAPzHL*KCRMkX3Pf3bE&ipH6KcW(ixsuVt{Hu zM+BCq_X*Mxo7$*lgvl4Of~#!pdDJQ2;y3K>XG$gVzbp_lx5*3Ofdiic`N>aie#W(b zHd}X*+{qF>YjdC-<>A?%*0^>-oL{gVI|Sy*O$g8|wjiHki=s%54X{Ge_zoQv$izSv zWPNe1a$fyMX?NFKKga`8M_f3#SpmX{KTXee^A~KhqHeWqvEI*M0`v9L&pdDoBrrG*9avdlS+50)b4O>-Nsml&&`G5QBukQ>ui721iW%mR zP6$YM1;mC06!O_=ulcAX1(De)9h0)jnSz#>4jO!VBr&beO+R@Q^)Ak6(q|rt6$q>- zAG_w~r!VMy!X(?=p?gxR^P*6)UmUKI$PSocQLMf&nnu+)4qqmRam;S8wnIU{M(U01 z%NM8ra}=GbmR1%a@K6DhtMDXMt$-h$_M4<2vfOlergb5Ps8*&RAeRWDl5rdc&Aq%{Zku+c| ze{(u%LcR3{ax{IRer=`M67C}LkyNGWyaA-S@vpG`IM#x1P5;lP@0F+&MasY74}~N@ z!CeD7E>j==(zmCd-1PlTSM)#$yq7CcpEJ9E_TcPUvqzeNK|zurClQh-U=@X$@}232 zI|2&ZiFwsM^D@P$k)sRC`c}4wUlN*to(@x&OV@X&S331%mxg3y=5`Hfy#IpdtfO5; zXbj&mvbXU4zc>6xDhG2*6%kCg&<#(*?@zC8p_QFqSEH5XzJ(3OUW>>-vLGR#-5*RJ zZn~)C%R?hCdmzmfX89yhB1xszWCa)u6rM<@ypr627oSRz4sJU7sV=1yRFVff?S zRXYV4D0C1r=i-!T-cNQ_?I1@4GOxY}kArQbVzz69mCzja;fSk0jXFoc37HY(LOT|UdJz73)D<9* zPtFYFn8O-~57%FIBi&{%uEUVFm{51|3|9 z2lLQ1|Gp!&umYInOnelxkij;bD^A}Du!4h2y35HrC3!oJ{gfT41$=-2Z88l>J6LLV zc;)E>1;}H92SZEKAzpLowydX~z73fQz>-G<5`SO_QLluUpp)ws;l*91#OFUo>z4MttpdUI-gktTZSu396qQ7OvZo7lL$; zPxQz^piW`87+gQt9wR>CCd7<14}o0*txwyLMxvS-0L#PaR)=Ji*f;D`ad(NY9}1m;iO=y6Zi2M`{s^9V{SV62FFH1@0|7Qw!wk zeG=fP%wt3l+t1pOS}=K_J`f$C5)pz_&)%6@u!nFbgGNT+!%F<;>_{!JiAfwJ_wc52 zTwq<#9qfEYnHW8ClwQz!1DR&udiqtP0mJ-Qf zBefF|-BtGUcc_`%w-g#=*hk|doy6+4!8Q{${0MjDge{r<(Dh!hL(N1&AJJ%3#tk3c z71z9du+4NZ3BnD-Q94p{j^@8`hni`5*us*+ao7$0K$&+8wwXZ)-5xrKDbCL-_U{~Q z@q|D002yC^C823V`ipj`7afHF9Iw-c*$2?id+}hKDW@Qe9DHIP@IgcUt{rNoi|PvG z7#Dnmk1ntGk{zmtkj_JtV_`-hoEv#}?@&E(*3~&@piqs852)*x4)(Q^PQ^Bb;8KiF zP;5E(47PYJwltxoC5spa>HeBy@P+VB3jeHKsnu=es_lkEV71 zV2j6l$V2O!utMlNfgZi=^lL_Q{18|U6jTt{^NAod7i^reBsdM&+6W`xeEDD-3NsFa z<;YTSlH@S?iqo$jO+yqqpy5Ww>~Vfk2`nww*+e-m#OF zVcoz)0`!&>LO|DzckXCqP)!lFH!^-9nIr98r$4b125O+90Cgsf0nnUiCtHjKC*FPc zXrJ!H0JXVdz$aC99KC0xPsf=L|3(rWHoGep#_t{MGKt25kJG2}0a0MbqrY#ojZ;Vo z>N@JM9wLRF_3%iajwcQYS$qt*%CKDo?;q{c3Hb_%!-GrY@p3;f*cS^Yl*_ry83?>qCQW93}?7?{E-Lpi3c+^Wni3k6w-LanuKZY~YxnePpD4 zhwzxpdpNp4Yq3|7e89;dK9ZEaCqzEBW)a6aCGmO z5L}_rs*gS~+Nb0AX_#p1kTTZr7yaZ&pNj8N z&G__a8;5ZULY%~+Lj0xe;4_15oT%mF8w^&Ph&Kp|&knYD?2i3FhruLjUpQfWZm`7* zKPGmd#XC4uxsLk$NM8+d9Ke#H;~^#sOwsznU>gTw$HGsXTss{IOXQ0qZJa`lKd_WA znPjstzjV5v(Uz(!kZKbw0y4h+S<8o0K6(V%e7>6g>jLlGVKpG8gcY!@1z$e>Nh3K^ zuLYN;OzJ?CYlU6o8ZIK!Um5M=K_Za{#!Z#;Cqm)DS4aGKET>{@Y&?%0$yV{#M*Da- z5yLp_WCOHcImvu|u#*Dgcc`fenI$YIVd{Tlw5=nprSy>VAL=s+QQ>b6wsrWykoU&b z($_e*yVkcx+d7U$uIQh``p|5a({Gpo~I;)}<<5eMSFPO0(LDN>K za&bnmk{^t`Cq!v7#DOWck(WvQAC9~NgyLY__zJHz5W3NiMqL3o9Y`!8=d2LyW8L}j zV8^=Wb1>uo?9jGR*|C2z>h=kQHYBVE=$#3dBtIQ_1z@e9oJ5pfvoR=lem3d~m>#Df zWR19RM_?wLpO3x*9KQ&dpfG~ChpYeM^rIbDn@rG2s|z~K=b9`{icYe2K-2ZXB*&ag zQJ4tzUyiz2Hq6V!6i_nkS=Uy-8hHhHz79gc#NSp!Gv(JKuK>9%)bHJhFc^M}>Ng{= zKm^p0J4OTtHVP8wx1+9r!~G&=Ud4j6Onmjbkyij&K63RW?eRXxR`vHIuK+g;C|H_- zJT>ZY@gGKA0cJnYY_g#sC}KAAKaRcvG0fcvy%{@-Ovn7ws4L((K<#`J4zp#Ef{p(? z>I(R%MyVu3NGe2YC-(kw`k7s%XflzOy?fVJE6c~{GdY&@*pJ+hjrcLNsf3t!^w&{0 z16&ni4W5RT2c}-W_O~rHL;QUR-g7GjFv1n_?;~#p0*wi5NW^=%UWCaNGXtfmawW48 z*pP+?JPVDdr_7AzdRW}fM5Wk)F@Yxm^6;8|<>)IAg${{yU>zK9b?vDmuK9M_mCk5C=>&z)8Ww1#)g2bp^z`0rhQw>j@GS zZgSJ8D*$;$hk(EV6#E2j_&1Nd0;sn51o(ZZdsv_*&lq_Hn1Yxv!Ina^#r6DW4)(Z_ zcp+*V$l{{pXzGD|%c$GuBirC$sOt0orsGG?8g&JTZWx?2l241tYJ3WdSI+ zp-}^?({%Ip5mlg&9yDDyL>`Rg5O+aB=`S301#E*oK2l`UL-M|Ue8qIiuK}ASHN`@flgA?iXf30d3TMv z0<@lt8D|o7r3qJQFBx?OU}>Xpq}%8q3LnY1d*l_sZxT=s|1re_$b0FiD-cA$xruKf z1QW=fc+aRS5Ne1Sc?g_x|6oJZ?;UjoNTXrM>I%TgBn9E#H|h!~E%Xg!vvE9DBH4fc z$SYvEA#Th>kvs)6yMn+NfmQ`aj-UV#|a zBMD9@Y$2Hq`;~+3V6JioVqkDG0PA8_{J_je9HjsuXbHI*1h-+CEAv$|{{usZpoVqf zl3J@^LbzP5Ev2rB+$>WOjuIGQXa!n)C!F#DCjY zf$q66_RFuHxv|N+B)4h0P;x3~R+m<)%fNM3=Q2a5W7V^in%zew)(*zA`x>?w>$MvB zmy@%HmoHongGKQsiBn^f63A1~KzsM@=YPq%XFn{6aJl8;1E!%CgiqpYX0GYqGNk{0 zxj-fOLw5Bq;x>pYHR%>4eDUjvUptdIhVkT8 z2y5|z@9lrl>6;BNgR)~szhUOAPR~A)`lV6C-o0&XLvVp+OT#SEjC7ns{5Q^Ad0MBEidJ;VHI{5IIu+CC z&BFfz(*Q3)62XI&2NE)PXh&)x?#jfqK~7;}nz-?sX0F~=Uu1dL)B>b;Uu0?7`8Dx^ ziP2w!jgJH$g7Z-E-^^_9R6;*5rH_gnxQyj18)xO3NGJ@zi-J0Yjg%g|Wv14%BH2F#xt@Wp+#7JugwR`@qDaSs;iZ?c_e;i z`4NFl&ZQ=xJItJ{x6Rz%!LSJAK8w|*NX=kcnE55`-FspFOR-8K-&%?0fNj=ro68)O z#ELRlTd%3vhL=*$$tSyp5<4C0=RgTS)LJxXC8Qg^eV5gbT%txcg@m36F>Bg8cC>!k zJfZ)xDM0^$*43~+#cp0F6ar^@M%9N>>VJqE=-#~>Ol%v!&OW!%(Owo{HJ@@eWGwNb zRV{U)1F6efmMoIT0LbqbG+A_kIg)kckN0|RhEL|Y^!Y@ zmN{Eg*5K%64#P+4A3jp6UWPMKZEo(EJiE@vtNT@F9mOH3x|~#wv+szFWM)TJ@59D3 z^Uog1*8x5*3v}ZX3sz(xUB~^*Mpq(^y^j|wY2!nAF~zIswUV}ewJ|2kD=DDth!h2y zX=H0KuJ}Z;lD3wxjfZzwNxA zD&3d8)-N`?Az$`zU{>7s4KPT6uub#x#T4g)f}ye4+-`b`w|=$p;PMo=9i&BVKqt7y z;w%t+p_t;WB^2G?Ykg_`YKJL~$AAmjT*D&|Z9rZBVll;Ai|9VZ6I4cBZq`N;m_96} zFBONSt|evtDrUv4hb82EA&hfb*YQP(qwvd(+1grW(Knk~HCoGQyrp8*03(UJrjM7X z&jrBKzOqC0z~L@3l&c&dgE2emR~xHFYdiYskJeSAwVXzOY*;l&CW!h9{9znNJ@vK5 zs?l1+psLbg)j+k6Kp{+9GDr|G)z^zvqf1q~uNtjiY;;4uY5<|&Y6XUxyOslU>Kiln zG=;M>JJk(F+!v_D;3NT&%JRO|^Mkd@Woj<{Rc6FGoBg9tQ*I78;^v)wXRiKL4lv9m z`Tcw~cXRbUk`$O;p!$K?q#b{A=C0G`9(iniWlWPz$0By;}Sx>z5(*Y~T}5 zLjhaa7XIgn|LvLk`>FHsWfd3s3)3iu!ue|L@@nnUAyrm*cF0ZP)yi$u55w>5%3+Xr z&?^Jt|2oRKmZyDp=FVXU|H@wI`Gq63VHYFyx$~;kOV?M@AuF*)F7dz>BKi_P8HJ{< zYkzO%zNWW6=tNfg8J0h#o*t`Vfm&l`h3hBh^FJ*>ZK0MPs`v)vLf!xV%(?X~x26(B z-Yh085fYn?Fg!g<;H(md{`x z3(-f01Y?^f+;um0emHZu@A8&{6ZK}6YY1D(^CKVeLxS9{ZTx8Fw*0EON~}0uUsPxV z6gyI{gH-7|N9$jYFEZz3H<&#GTJNRjuP=qFHhUz!K(5von__M^XP6x5WeWVKoVn4I zaeq8>cemPY>L@dSsum|6UE_Xaaf;JfClEIH$;^}L??r-)oYceyJp0WiIly`RpU)A{jP*LO^!Q9SqJU+h>-40L)Bp+ILI zvq2yUznr-~AK7i1(odhX9!}d7)aaA)=@d~woSQ?^YaY%=uJfyze`Ag3MXss&B@PM| zNurS(QuASkY?voGL;?J^Lo%K7%0gw4i7M;x*&EL7;H z;k5UMnd94T5fVa+CrMgM_pQ!f&cKts7d3DbA9kJrmM0F?A7|FK{iJjbR7mQkZ>qAq zESuvKpU4$wmHgc}Gzit7hStCU<93(f;bIodVa5ORXc`Fd)3woI zHPM*WxO@C%#-Lx9Nl4GDMH18%wg7^fYHeNQgjUui9KC>+KRJ9Cj0yk`Lq&g`IlIl5 zE~-ktym1=XyO-=-bv{@n#krhi*%$EU37m){frb1z?nQr_In-B4;yhA-yt0}q;h*DW zh2u+t8%kvOq`&??z|g*8&&pC|S?KLGR?byM zdF+*$$i`Wo?F zCdie0ZaA%7DO;=fp|lGwkRCWD9dJ~wt!?C#8$Z8?>fdBothrw*ZvD!CbZH3GJF!ys$1kv_C~3ux%h&KBeZT14~QM~@5`!Vu` z>CEyJg6{*Jd)*!Z#{peEIiD>kg0ca@TK~rus!-~f4OJ-j1LPl3u7iZa)c^?k^?SC0 z4GH9SL>|Z2ZJTXCf7%{|<~lYdt5-e~Sa3n2MaZT3G4VO%D6|_k_w~fnk-Bv(%g52( z48y1IdHA%s5r~tPa<1zuE7ck&;^Isxi#r?S(d+|P#yko#yThHdW1sG(j`~~ zn*9OO0xYiMSlDOXc?!}IQ@168;voX(+aw*7t!_SbTY@p9C?qN) z)R{BkGfvr-=m@Ejr6lQsXat$;XP&w(VZF3$A7TQgVJMW|a_Y9kC1b58bArZYZ=ogxgI7-5I^_SZApNj zm>U3h!4#8q_|{XmC0GpG4#pd#RDrmf&pUNnk`TuRi^_cj9;y{S|CDVB$}Irpcq@oV z+U)nYow_aI%mpPo=9Y?Ri|@SP)NKjE+&0Mx@PigkF52y==~B2c`9J3RKGz@7Y;p0X_o&`(807hy4j4KhsbIdxkSAqofZB~~O^F>}55 z)NM)P8U)zk@SrkegxY=K63}l*2AlUbxx-Bu_q5>L$)`d^4W4-LuZHZh@ zTwLlHVBiAWm!G;Vf%Ou>0t&hNf;ZJ)aq6}NnGWEb+~YMokX7``Q?@1Ku?!VQ38_KM zNJ8&{Q@16S4F(BEB2=zS-pi{_-Im~Q3qmE-Ak)Kuu^&8TTcY5l17IdpFM&JHd-bW? z5=30t8w1Yvn2v|RYfjykAO!(b#zBMHZ~{%e_S9_&SWVlsEvRbBGwkGbr)*1zqFe#bYxJ>#vilqY*gz|%K|N&Pd{{WUPNb7t&UJ3 z_aqi$9&sJU!yEP#>O7rFEif`2acCXtoL8%XkSRmbm{K8V1kCQya01W##yy23!O&{b zft@K#$^c6mA`pm4h5kc(a=JyQnjFcA>;)vF46{gZC-d-2LObJVrKfP)AWxs~(PrEZ&p#oq0YY4@{&wj_A`|~=q z6~3wip!yl!t*@~EK9j`axQPMpuFKd-xQ2_2B?m`{79*}ETyJSKf<6V0m6RjhSvc8J&+2W!|f8HcgvmR>Er1=eK%Oi06$^-Yn4=)^{mPwoQHDPkx4=35ZX$hkY9}Khxa_GZ5jQn zn58${wv4(sZ29pBUvji$;YI*BM1SV}JJk;g;x%$~>?FSJ8J7Qn(e?upOkCaRj0AQ9 z2el9Gxo+#@p|o?geGhHML;1Xc4-M-t=O7FHT?Fbr1O&WoIsJ@@{_Dc9DAxkRS7Zh( zQ}7lpMgSk)^Iu!8M6ZF_=#cW*BzsMklvq6iSuhc_k8GzOdQ~Bt8!4SNQsr700G83| z!;Me(QGszjI`V#in9ek{pwluj64&|Ij`V|>h#P`J^AB1`==vYu&Pvg1R5rhj^1xKQ z4p?Cpa1#`nBJC4-|OvrFNIQ9X|%shK8ZXiH$;r{pmg0+#^zfx$G{H zEU{beSK+#d%B4Rn=qPt4Q2DV{Lho6r&-DHZIHEW**$UB1g4}L>wvVrnT*WYkHOhxz zZJD3z{S`OB!^}WC7qK7*ob~7ToHy5I4COshQt%UIKgS_CtsQtg4ONfl*bKUkL?UR% zAOxu5*&CUW+9ShYjT$ z*QE6=Hr@JiO_p5Y;{Rvwy@Knyt~CE*|6k^5o(O;d$f|joQdgm-P7WNj+LWl&mPDGQ zWVsV&pG2Sq0x$wa+TCsC94uLuWJ$JcNwy_9$vMh7=bUrSImiERopjH=xanNrg0@N% zERw*EXNR@d`quaD-hGZb9>nQ$HR|UBPc0RXikbX*ekPEZ?6VVSA_o=Q$h90(Q}&m) zU-5SxCyfahltti3d}NW7-6){<=^yu=GEH^)b5iICGN#K@=GBGqp^Fyj;8dlI3|8Lg zJ&K&%R%bvyT(^eOZw6B|gw{~z!pI6&qx#DBf9N<5P3!-p^qoD6Y3W#`P;1=aBu58d z?O8rw-g$X)z+93eg=-BWeouXEI|>iWWWM*c@r7S^cJA=(MT%uyyyhB%7Qaq9N|XiQ zf%oxpX=r>K;n%nSOO002ahJzSYSf**7^cpF>TLHI~vPIQwfPH-S48OZmdh0iu^pgi z^_}fu){AzPK_Ij`J2Nki0=bbTQ}k^43-w0n-)7`Kxd=5BVU}a0+8dEE1e+>_{H zy5HS?PM_Ceg?OJ<3g;jfIWD)5Yyf1GqtN=^_A{sBV=$2|Kz<=f^QC9Ha>KT-N<*E6 zmjLeo9wmr{e!sl2xn>%+%PEV|ak-u=^|igRNv}=Fu{DLlTCf^F*lvfj%Zm$qIL>qq z{R`>a!rGCUNWn3Y2uFv|pUg&FOkBGt!^J^F2ICKzp>_$%xudkwjrPNW76T)P2bPW0 zH$+rF+Wrq5M%mJW3Sng}SmES@m*pb0a%3jKzXs95^1{qfHNPhPff1f0{*0 z)HN;iLLg)GFxY>(J!q_?BjOHGnR})2@>}V#H?oCXu3`BYw%kdc3(FA4Y7qTw7>xje zfeIYIzb=I7vGeoob6wVO%hjAwgkkcX5wGr@TUk=8;jGZcGYa8Rj`DxPWJ~18AmyD# z;Q1!{4rtr`#r6Zezs4+AUwUuK9k}M^tg+GHtjtknqgexfND#sJ2FQ~YhC)sF0& z8*h~~rvym1WTM&fK>FSGq+`asgs3B=MUDy^!715a&X2j4rVdt4iTo-!RgS;P&7ecM zmk?@z=|U4~m)~!HoUG$udGR9R2+Qgs%xrbhp_F0p(9|AE=DHOefbxs1J^>Fw(eFZp z=t761{!qUP&lkuyZ%1WvK}Xgfx7%G0KdywBp3TN^(O|%!&WA2Ky48Q${y#a8=P zv}L)NkSsziB=-(2`UrVenB=Y)?!X`>gz}J-08u0+B6j7-zjn0kvmY!jWnRF2>3g*L88OT{Bqwt;6fPeO*BY2ya$k=`ad~*0sZ3EJ%Xz0K`$NCjgWj z{kq{chkc01m1RYqmLOW7Uq3>WJ&mxpCy#Cyw=d59S-5n$BlayE$fD@yWkGa4V%x~N z9*5X=aC^tTk3TrNVe6VE9uZm^1XUJ5i>w2U4N5Yx&^}CZe3-vt%Lpknst}Xv}6;w~k!YVsn?YONV2MWENFwfVCCVDSta> zXA&z-Zo!m1?F{B+8OLO%oTlSt(hW8MT*^l5J#(bZr>KlzZ7DSki;nAPKDy+vlll!o zzL(rKaz=I`q)`*R4h3$s@~>%NCG83BX8Mu^Sm1?b8)(862MLks-#+q>Ewja%sC1;| zhfHD;VZp}eK4KLiDCpiXazPa@+7z*<{y=PmQUL9wJyWMlohmeD;y*54v$(8aDrScQ zeT?;3J!|B~ZB6~&}Uc=&ztM*8MNDlnF$e8M2 zJ-s_e&aXDr|6p5(Y8zy~+fc*;f3cLW-!;(2fawqD18kQ@#Ic^}caPlB=Y+NM0_Fs9 zl^Ev$vzPe``9#1AHIGvd{xL)o-Qd}OMSUacrb}=f_l7}aIDF2?T^pabN{n=Xd20@w zBGrle*hq7!Jolavbd-yoxVU^+EzCV7^^p(#{C4ahbm3!y3`8>Oqvww7>(GxjXGXQB ze2odteD7?jZb1wrAfr za#rs;+WiI_1V4g-^Dd!BJi&b9{*k4P+kt0A(7INL^yNUq6rAIqX%g9Zu=s8aQYiF@ zu|I$0aV-~Map{+arBqn0!n9Bs#gAfPx=MiQ1zXT-p7&&_r>P9EY`QPpf+i)1V@IAP z0bo*09~gd<1WXg0l##@YByZ=z;Wvq(wd@C1bR87I%7=#EB#&iMFW^jt_=VS{^`eoh zO4Z~QNaIsfaBtseu}llYa}e89LuE#}SQ?=T5Zwr0Tm?)q)+-F3DPu^t;^m$}Bh3fCjvgJxCv=TQ^wN=YJ317yP;`N5#W$HlwF_v= z3Ma}e0UU(002Kv-^i%3(Bl|m6*w3?H&L*F%0E2)m2O@4t?ctHD%ayS{18TV6Bk>Rv zF(V=Iaue`HFCV$4aRG}OGNLX5?%K`BM8xP_==J9iW_BpSK3^| zEx%OW#7+V(2xJzn9-_{6@=D&OEw@4Wz{!#U3g0pwdpr*Ewo&u-T+-qdYnqMEwN2Jd7rF!t z#Pa<&*R3GtEY`s+_&8Arcw287IhIFq*Vzrd-2$CT<|jE5SM>t;I=V5Q7TchN@Iggy z9l_0&29YIjq~7!#U~#fW~7Ik(>zNZDPi@_Kp+M3(G=llSJ$|2_4_Cf_IKwv7x!BJpFsm zMfIgm5;BJr?mbZnv2^2IBg>sCC>M2RXjQ}HRkiwcE3)ws3Xl~KS3uKbViOC1Wy*W^ z$YsMGeVUKTuBwh5wFvlbkP9$kg1MISo^nI4v%br*SDkN74#j-d)|G6GzPh0!B&)$@ z5Tph_?CR>h<%V8Y!Qf4I*wDPRcw6$+iu-*Y&3y$HwNf-Ojd!^1(m=J%KWS zWQmWAJSE?s>mPDuH+pUD^+g*qTHV{2dM4Qhyifzly>~x4^3-88-eGrRA7}pBVYaeyVKD z{A`SJ9`Q^S0#FcAmQRjcUR)iG-^%K&om$+nD~<159$z|6d*6-V>CuT61?p2Ls2`w7 zd6;`5@uei??$h{?I*y}U>a}*<`gv{4NA(Cx9N@`5lMx}JgYe5|@ShC5D;;YebLuTwfeHy=xWmvALDi6(k{>KmOeMovlrsqfMQwP3_aBs-kh#PHA3f zyRf8-+8SvJ{x{Pnz_2>isTYBn;8-DD-@+XL{O(%=0U>Z~#WA_2SU6F@+v?i`)k5A0 z@HCAt1fxG0zuy_C7WmzK*h7h#la6c$(RT-`CDBL^4h)VL3%_6Bd~c+d5*`W0P(rxm zKac>%RrvjS#fi~-%JG2&lRic^+YcJMv>MgtR4;c-&kL=kU}L9LPgElGWD;P=nB+Hs z0sUbE>eW)d`_+bz1Fs#~0!d&Izcqd|a-i6(o$IMwOVwX0?AT3{p7()q04R{?%BT~+z@b&$AJ-2J{HKO|J}KNEt5HqAGGGV-6rth7XlY7Jq1 z*$y8UAfoUQ=(Yu~UF83?VJ57vqR02eYXEHBbx@3liN^dH5Sc!P(&f-?bCIp@RAXG_ zg=V3c0pmOY7Cd>8;r{%D^@K1U8sMZ2D^7IZjDJDYa$|GS=Bn#9C)L{pK(&dJ&4y^) zA)C|v<;Y+9=}ga4WPSUccg(>oQoBD3)Hdyz<{zE6G(Wd+;Q?|R3X`z;=X(KSw*JQY zUDpa8Bw`zYG_oTOQ!ja|2ut_U@BHr63-l&JGOiGq2)Q+T|H;+n1qJ1zhpm|MS;yGLr5-bGbGRdcOxf= zU*q>9L+01`L(c{_$glCok#jntNJ@r;G=)+m-z8VIkqpdtnI$_A_>@J8GO4h-q5o;* zV88V>a4u<;5<`^*Cba^YBX!P*TpV%4PxU{K{LOH0{AFZs#|g;YE%7|j<1C9Sb!p0o zN&LZcV<@6y#EtFX;?a#US6tGwe0S!GOGmeYx#F_XVKP@-J~}++iYrEk!(4IYXrIg# zWVRAbG<->WcEiNHYV=3j^5{joL_&B)i-d(PzqJ4h#qQnb^1qUy-t!lasO1aOOg)l4 zB1uLpm|NQQAgjA5BI%6#u$)PqT>#O<7NCbS%dnrU!mBNre=~~-6iK-K=8`q`%WOcr z7C3?-uxRpYtgA=&cj;i7K|L*W>iW9)A4v;nI0?(iQ!zg8I@W{*h5&y z4GcLKgfG``Mx{&)?;X!h$l^$V^4>7|#cu0TEiJ_hq)cbYK3!)2L@v!>ZT`ZUrL{Dp z-5~@5lNjDCh)xi=yzx;sK2Oud7lVVF^d~|aH$BS62Tus0J;%mTBf%`~>5sPYMZlRc z!+l^Tkj4ZzKg!03vYAEP10)d%`=O<7d9;nsHarKe90@{ON_U?z`i5@j=Sr-WL*Rxr z&(CHKfsI_-SqEk^x`J77b0o+mKKhvkS@hbie^b2=bU!9@IKhkHKyu+d^KYv6u}AhF zYG#^G+Adi~w~apXcik@3l3JqAwR5IgkW8m;RSsr8?mbR^bba%&X2r z>mWEE-kE7a_OaC&Xg_D;@Iv9@-UJd2A~Nm>=OZCYGrs$=39LDRyv{IVV6nI00Q1zdADh5>6A0%$enIvz zYEL{S;^#azf%PU(k@Q9U!9ngA3cA?2=dlT_Ie{cQ5x;R0jie92M$dh00_#m+Xppau zazzYG4A#5gd5=wCy$OVL$|0|v6jU712u9vJ`taYzTllOaNJwnSTR3HlYtWFOyPw0JilCV@s+wB@$3*GVs6RlurLLOCFgSM2<~l z68Sh~KQy|zx*jhYeSAr1*GP`a(X~D4jPU9rKS2tK1%pdyCodk|U)I)w!|u0A16Irg zo)ArU(8==bmy8}Ps{~8YneZovQMDKA(4phUi|Qw)hBrDQ>iJ1)W zFiRi}sUNh6NV0>G&3Jfpc9X^fFAzfZAnuB$TzI=Ru)~D@$y5!rmyaIVq^2rEnpv0& zV6aW&Ef8{A_!wb+(xE&IUNPkMY#8~;8UyR%kmZ)>uN-!J2@E2pP{@$N%Tj#RklS;i z@Pc9hJ)b})2UNX!$nAx2#+vX-LuEx0W)i<qblYl6Cp~m6L8`jRtVyL7i`fJ`8!#MZJEs zlrQO+gu8Je5!;64EP;mK6ZTjt!5hA7I zsZszJZ0QBSTGYV=oQd{mpg}Lnooc}B{npV^h=c?a8D!X=d^dR8rd5nB$b}pl zny*2`>b-r_D#o|yfcAr#f*t53@7S!0q4p$t2zVbZd?;p;cWze2(BN`9DjsuMK(4y~ zuFb00!{LRBx2Ygp_B~sF_hwa$SWaTuyx3!qR7?t_ zMi!<=nlZLS{DINcYS9g}n&zz>oIAXr(EAfnhHA4&{%J5>ku(`0mZa1NM^CFZThQsA zpKDT`hbev-7(Hk2GVhRFbdDp7d`k~OP8KJ)t{{v)G7Gek#d#_i`B<1U(&VZ( z5~{83Gm0|7Ypv`PDOce6AmC0MUb(iTeR%ZF_Vn$kv{ofYxy!e#q<>atrj#7Wt4gW0 zr!(Pzsnd?}PNQ342IrC&nIN~w2K8--FrvstoH+c*=;bAm?aEq&Y+o@SolUmlgEXeT zzV?O+I8$AY5*|<%WZfSf-E@xLkBttUvfQ$GBxw$zJ1>I&*8cctZOU>a-;tj2R01az zIvUO=hTm(JC&?U|=Oa-Dy@CJ9;Wx>hZz07?Vl~2ap6-2W_)Q{+8bEe~ygUFW!#6*@ z1x;eM+FC@49~74OYCbc1?Y5rhPlhS&`D?|tERU(`@uSvOXBU@YeT`<;GLa>=Itkav zTti`p_@an?es&Z#^CHD}Nde^~fe6vVEntbZ6CFy&go%ML0%4cWjXt4MM=F{1ZGWZY zJ8*osf;}XpbvQdoDF6KELSEtQ8u7l#<6AF=g?(No&~YIAKZ0t}EW zk!ohx2nEOZ?6fbAZk7_xmqs6#qluT*MVUq=nbes+WmQfRb-N<{hD>{=+(MU!G_Wvm zzdZW?`WO*vl$jbYDtuH`T_tE$hVdNl3`qT=m?XJb3n?^38gm$nRJG=PWpv1rMMQj4 ziN9Iiq!z$`b{h=cMr?j{*e#byYnCKqldh;sOy1%PjbcL&G{o}0QExqV;duV$=voKq z$4p&oCe125JyqHg;i=m4pg9-2&tYmZ2531T1Wn>^jXq_#?XGZ$&dkDE$?}Fy8s!53 zIuJ$pmJ@t?Gn^2o&ymI1o}W9(e?-$be286&b~0l}AK^P;a5!r(L1}!AZd`?yNNoYmB>Gc3SpCbK12gRX{HGbawY zJ~p&q&JRbC$4e=>JJhgycN-c%uvwaK8n9`r0KulNbe4lpYY03NF_MyZ2uW~(c$^#9JL*22G7*)HUjG}j*5t464qoqHtxm7n3Kwv0D zsDvd#@2BOQH}`pe@mOs;=Lm5?%Zh@NAE=NE;Af-r-TS^iPFP(q%}wX;LOCw7xFQ@B zytow~Cf3koPokfXZZ=i$FX}HEWCX21SEMH;u?vahFE{!7wWry1aX+F3;KNbDjjL`k7Se(bd-rDA45=v|rF$eBV1cKw=j6SVx&&!S4 zW%L#IRoglmqp!M>Y}^|(9-yBh)Vum`M=vf8(B@UV8C~eWFKdf>jP5!l-}>^b_}ys9 z-@iJy!~-H5PjQ%c@!&WAdU<5@>%s>)<^&PSJP=)rE%E!&TS{L~y9=!7*Kj>QKF)s< z=h5qP10TrqA4dO8Vxh~KMle{9+@Y5a_lYQk>|b126>ZKYa0nFAm59e_DJ@18xX=Q) zym1t*M=1TYJua%f#Vc0y+-a9tuRq?2La z2*l@-v8%S_R^IWI)tG=>u{m>h(c&`R+~!Tt{`YI28t??dBnd~KWT+ahx|FWui;=Z; zj4$51EA4;3c2}S-(?ByMkqT`K@~q3o?x^t!8tyUX;ItLFIy{>u3Wd?-W0w!r*SA9U zb+k60fwC%IK5;oJ4tg&}PKqP-im^>r&%1K$j1KRO?9AgFIJmgH8b{}(M<9O<7dgw> z@*d2+Flu6mBBFu3=~ZL@)lyUIfwGXg4GzL=tq#ZMisK;DcAG*mYKr*FT0HfHwRrjX z<9Vo{@^;#hrPbq8=cr@pk3{o(f^tYVkai3W5W+0}HDga3_JE>gAsi&omC{npLQDvC9Gu=HU4>|KTs!7x z_CpGmOh{75mnCEz8vaG+sZ}(QBCBGaFwP>Ou*AMH*}miHm_CYHz-G!`MGfUyxn49hs%GdyS>F zwjxvr`K?A}Say5^6QLju$-r}NqIP$} z*vBe2apQnib4~x|u^WnywH`Lsvp?&L)b0?>t5Az0dk0R~;iY~{qeJ-QpmJNSbJ4CZ zQoBQFrnt5jdm6L~9>O8dXmltgwIt?VmsRW_NWdK`zhj+Hnlj>EYl z+z^%Ec`uhwqsW2y$!qb->Omq2Yb(^Oz%xS7@3tO+_q?sqAp$f!2!zP5sJ-V>USFhkhe#XL$cC_hfJPp6?CoPW z6??1ldg;4IZOYW|k^`$T+%!n35+&5s9b-2ZUE(Gc|96BlHNRa-S3s{dw7w{~jJb$w zAzw@_(&p7=l-L2Py}UZ0iVI`qK5MLYK+l4|*TA)8a;_o-7Tj6=@S8fQrNx!G)!tjf z)UY`5j^q17InfL6>T8y}_2nr^YPkvB61qVUxv)tR zE6_2`?>^x@ifk3aHI+n2H+X0oK6~t4Ls^Lj@`+kIlDSIoGF*5THZnY+a|=`1R85_! zR%WO2b8hMors46a#`$+Je_-s1B8=Y^nb+z97Fps5$FxUqoVQQ(oU!)|c_8_wI<)CS ziNb_OKTkJL(rVn~9t`1*>um$4L%XF~ol@2+%0@1%v_7G1BYf`INBZc;2KUcU7E0-W zh6hs*L#8$$_RLG=d1D{n*pM>wyBdvHevo6dlD~~1+J4uz!c@k6~S-H+0Bz=Px+V1eX~D*$uBG}A4!Add;@Sb4&Ln8 zj2wg4xAFY3w{7dF2%q2V8+~8o12G~nK1dqI zUSXHa9G++q_FHJYV2tok$EW82N=ua+^rRMzaC~pn#@_4~-Ek?>Gn9 zfY!SdG!H&8%^+Sw=rT(57Y$YmyxL}j>f$_h=2KIgVh2=26aJTjR6VCPWbQ`@t&UFKARH`HiT%&p^HWN zG=Yi5d3nv^Ze*8@#e!ClKrlk!d7b2y7ae*{`Zs zJn%`Y@krkx!v;|?_3DAfK&)R`R6)L+#ZHW0GgvJ!vMU{~61)z$_KepKREtC&#bO4- zL#C+}y>6gdBDAMLpO{F6`EcZ`*AG?;AT}K=n~x%A2)gJE1J#mvq{;%eICqf8shhlQ?9$$y>vE!3Y_3jY zY)p4)i#aL+Ed_5Q5D3&+^|zmpUPKXLO!ThEs)jB;PTnzg#fIi0vusjBq4!)=%>p`s z!`JmKjqG(&%HKKm=TeTWb?t3n#dK8JtuCUo1m0d~tyO=JudZm%>Y4bSy8T90YUNak zg!b`!`!4MGo1}52!Y_MyS>&&c)Qyub{)4z`0DLxedA;~s>GbL1p$uWs525wuISCPv zt-ovRy8o}!H!QzEmu=Cca|j;@<|GNT@82ji1F$8}7GR$|VH93~4>Uag-DbT!$a=+ox>eG+-K)lw zE7pbJ19%D;_y<1Na2j^2Y*Ttv?we*GzV1YYG!kcR zSL34868ocI()t*1`B}T%m=!~^j~W}RuCyr;?XW=A@OHrZ)|L9$Us2x@%Rp#W#7`9< z`M~}7*j<}7Zxu_U*1T1(TVF>Z$%wQ7j}opB>l0&lpP24-0F@JHH9)W6?GH$z3DqaZ zuCCR;?in84wtr)t75N^HhN_gQ8MrEWB!>2<#vW>QFtW;9v~qI`WesG=+6rdN+>yCe zl1Wz}nG-1M8S!fFHk9~fJ5S^KDzlGGB3tF^BwKO@kzVmXl7lEos^s)0VT6|uS#&5a zollRwE@yZ|Nen3_^2d1=!3%;1BWg;B&k} zc@U^lBZqZbCEd0h7xj4yQF|jaZA1I)dbe}uPgow09q-{5zjNoR8tb)s8(Z8@@aVd+ z4=)Fzlb_@G>AT8J>|KYOnOlzM7m0r{{uh{%KR@=wzI#_L|F-ut+^+CQ5nlEkVzPn% zg|S-)7fgKtaKqpVrzWi6(&&1U|C@~Cj3;5`c`pOtO z)x~9y#jQJU>2m*dna_$5(09F!RarF!AWtN7CsgE{8g$nF>evG(zN;O~0?Rf6%^;Hn zv*uIzjl7SEN-kgx*$9;X=~{);(4UwCKlPay8DgIuAfXPAX=%VC$3dO5HorOtY$INk&~7=dfP`0KkO5Cjq>_W=J40*>y|5~V7 zj`97m!+kf{@w;76*;(aRBfbdfT7v0jyLim39}KM}lI(03@7;-v zAKs&Y{7cRJ(a>6om^E_LNb|J~PCo0$WB<|jcj~y8tKX@*C^UdW+)0FMPz?{w;3vau z%qB@f$Bk-5BoPDd{^^)D{l8PkXJ!euA)7HEOjR+&10*yE8_>^s7x7V-CKbs}Oh`dl zi9hdMBy@Oq63hlAU=fcFeld15>(SCGS*Ah|&y6I^<6)`48Y~_YvcOXok4>jvr|GT{ zz}D>C;n|B6zV!0ZS|%fBR}tHD7Pyoac%&f;^AHqzza0Dbjt!^H9MyL3mT%ct3p8Lj z#OEP1!bJy5x*z|5pr?mIkTTWBXKLzcT7AiAIdxJVM92dIbUI^<=Ru#! z=EBjvF!Pjnd2vQw&oV`)ikj}ZiwpnEKV~oTUQ6XbmLh-hRIj#Hmf{eSu+*f=8#>58 zo85%0hm|=dF`cb5vcGNG0FDr60beSqR%!j`6o22e7WnFthFN@T z4y7LJtnY7}u}bGvKQZPATkX5<%yBl8W*yG(6_?a;f#XVLYWZ-S8h3||?a%(T-&+6v zWU<+2VU^_ibxCz`$xt<&-^fERb@BCeLU)M871_^hYjr$`B?1odL65nV!+WaqG|q@S zh?R7v96D)NNtg7=F!Ok9c``k%J_4DM^1c9q9`|h@K94H(CmR7z;br$J8t$ z?NPZK`ERo!6Dxp~?BX4#W%XwC8pXvbe^aE-@7^s$9NC{#bQGDCcqZVOn^lgG z2tp}M7>lIF@RA)T_gl}x>MRw&Ct?=?^m+LrUZKxBU=h6x_|a>DkxssGWDIv5zgoff3y!%h51zs9y!3cb!+8 z4qd#+UwJnUPz8z5#P8wPGT?>NyqgB7!T}wD#}LQ`ezeGZ`XE)f5g#x#6yRvscWpYQuu*u$-8o1V30@|!A}BJD(-GfQzY1Fuyd8QG7*N0< z{ksRKBCG!09BwN zVqhjg(GMwakJ3ti>;GtwDl+i(q zZq$ACtB_P9s4?K?1YM}d>iz+$P#oK)52cl#s#iU~eiZ?XD#{~Z8rY<_2gVBqsKSX! zbz)_bEQcG|eqsG8LLDJrbX5|J0alp)K>aEp%_5u=#JK(-gfol>2dDxOgMf4+ARUAp zbp4_FRbc(YMF$!{_yS2xdC`sy5=3b*|9LUQ`vLrhxHezB(F%3=OC1k;&9 zqA=v(R(4;$;R+Eel+_Q}t?m1!`HBr!$b(M70)Ri;L)T8da-$WZcM(f6wnVPjCDE%k zT%n*e;C_IxKtV(wzIvk-qGsuEoTA?v3mzbP%|}gNJxB6t0cVnO2wEe0 zSFMDj*)<&c=JXpWYPHG z-`LIM&=F{P%SJ0Cqd2r3qGW*;L#`aYb;A`#h7K4GhVcNBc|CdC4s@40vEW7V((3HY zyr4Cq=7nD>iqDq6;6%xS$TPgRXD))Kcc$rAXYmvS(06k7hG3~Q?d?NpC4@+jtR*)D zib@8XddH4`Z3wHTI>jrih#J73dI-_tgXy1TsOgWE7Z({+;|JogilNJy$wYYZ9*_qG zcaKTRDk;j)YQJ;G|JzXY(DMp*a%C+jx;0CPnhTVK8X~TO33=C!r>zTCl^~jSUf>*0 zR*5ICD_;qAF~(LRL)#`F7I_0Nad0r0>fJk@x~_)J?LpNa1l*b=Q4K;y$napleb0`^ zr5`5>#7&3LbUwa(wS|jEmQ=VpBdmu7wJ>DM4sJY_Gn|Z$WxRLC6WUghE#GB$g~AI{ z#*XPznU2CenkDeUe3(kxm;gOE_@M_NJ^*p?`*xgFqt1MQxiGbb&l9gL_lc+~`{w(1 zoL!@?r8RtE@F|xZpfRpf9E3tdgOfi=K2U$gcuYalj_<)kR)aL?53+4es?tAeQz`#* z9w;jL7xQexGgCs;<>@_VMdD2rUF`TG+`MTjBHIS3atKD*lgKq_p>BO>$6`T&-OR$C z1Mn&dRclL21mSk?t|^)t*`l`xGYk$DKnUu?J2shA9Fit5mS&_h;kS=IvdQ&Bx`+XT zlAOi6fp7BBO|Bo?m*dek15Ablh0Tv`a{YlXUw|Ym=v55}Za%)r^+%8wcnBY1%=!vB zz@&xi5r}yB$xW^wXpDs-g`s)89USFdCVj&LNapd6U|qNX>k9kUCfy z$YTKxjp2w2ttb;P?k9#Ws6sJ=c>9V*1!gG!c(<=ys; z0qP(hQobw<*2v}J9s1@#b%4@#AX0Ih+0gCUb%aHJW|_XnvX zaT3(-ct2_(#L)H+2B^a#+lQ<%oc#p7b3$xv{Z!2f}ajh2j3K~eM}s{3o0?}pAAq4 zXF3XcHVJajOPR6t^8xB0L`QZn`yL8ExZV6;3{nRqw7iy4a3={I7sW3JsUzUaI@mJ? zQoaPJelN>L6>K1Jw{Nb`%Lb`?rJC zA>WpLhs>rDcE#TfPzR*Ngp%<& zpoGIe4pawZ4D34H=8{l>@uz|6V15fexN7Ew$lkqV)@ z%Lb{#35jkQT={lrfvmZFkUBy{Oo%0*lt*fk7GE(?9h~M|3s`iH08y?SpbiNLfwzh^ zcoSjm^sXAD4%5-lgCT2I`J_K-R}WGL7mT9}+r(mbJwLo=pgLUT!T?EdIzoopx^|E{ zT+Drz7n1gg4xH_}f$9KKODqE11KcN;ef>anVCoZEO9-_)_{(k>qz(^#8K{vl_@UcZ z?u`S~fenVm&kG7WhD8$JG)Ns7VhO-CKQ@SeSk}`Ase{)K963a1csRs2HV zJWKgM2#nq`NF72njW?8>D$skO`HVs8V6y;9sJOmxphF^i`yh2710$Hq1bf{E9dgGYb>O#$z%OCr zNuFZ#tbyvV9bI>Euwn2+KzZjNb%YTTc6f2{o3qxuy9TKv@xT}QI?nPCESYxq0Chyz zFv?R9erTeT5j=a4Iyg){DAu`ljfBYja|WpcAOp99P3F6e^pJMXKy^R|0`N$A0We-a zdhP&q#2PGe8ZIfK#DEs#=M7Q^I5LnrqAE;CEYR;Apbnl+kY2`6*&-O?XzqQ3)Ir1& z5_LO34_=`pdH*1F*j`9@8-HmGAFUQXf1o-@`~Yum3ymyfqAwVv4j0NHGqNOi1an<` zVb?nHm{JO}C!1_0_n-32hfCYVK^_3Aj~^JI4m?|qM)*&`Fa#>heQk#tA ziOU=Hp#kdfp(}^X8^e$s0l2|mG(H%KIwnwrS6a+EEeKycP%XOcM7qyn(_$Ptp7D~w zYC(LLUBkyoNI8kDmkv}5ZaTEs;eJve4;^K{Y@k|PAr8TcRwmhB?i z++A-cyIdr9%`PrpNCM-&g*-|0yrsj-T*z4jK2KS%D8mM?L87U9*$Po19*zg>1%UV8U#=)sQ^iDuI$Q6x=_tYR~Q zl*$ZPKL&0by7rsLRnI<1o|e?w(uY*yR5JVlBJsZrJNwJ5#!^#ITM<Z4vORkO=lMY6>*v1mo-aWp&saq$zg4sH`^_r$!Vuhf<<|Z0%EGRAA z_l*B{l^tsC$kIHgQpQqM{lOs;xJ!1(S_c^&sFDGaoC7iwd?vO~?78N9$FJYEv^amE ziWXsyBw4+}PuZ8oXveaJB+i-3N0xH-#pw(*RqYRYdfXHE+&#;H8#Q|0c*bWW6e5eu zDO*Gd!0R|6WrliQVxJUj%cYeNJYvD=z5{ZY#L)MTM_FN`pTU;DdKQGe%WEm=ciU!I zS{MNU#_{A~tmq#YPBXeZOd-UHh!HC2yFNJF$qSKmF--(SViJbA(mphPTdRt8abGt` z3wnRO79`I4DyqB(hf*cSG?AGtQBbgvqZ;!6(4wb*_&q;7e#N#b(*t`dr$Ff4o%ZEU zJ2tlhuSpmmh}FvC!gL48Tw-Z#>ku4RfPHGY9~mzxk_$^~gB{r;23w)GHoZ4a1xpKI z%Tq*yDvkjA!b9IWNd^x)!XJQ*Kw&UbA07YKazXc=mhx9GsE}z@cQTbrsF}QG4Kg`5 z{Mh*MmZ{AC+RsMoP%vi@6>ae5Q;i%F9?z&ZfLXPHb$opMScfWl541zU(lBmqT9H?b zfCzqa!{z1tiSgSvdFiEJJjXE?>u##$!wV~rYMm9xHCTcG#DpFIqOMO4;frJxqU*m% z6v9iu1uvv{@R8}C8oz58(~=9VmD5tfy;~-zb!tLbLL?Oo9a0thGZH`c$OH6Dontfgt#2Hg|KnWLG8dmXHq{!m$v4whv>c!&^jnHUyup z=0wC&{?^R8!Twl)14^C>F{osMl%nBbbL4z(D;mYRfeut>H=&m%AT(pEGY;a-Is1d%;>^fBDN zyd{kiNCCzl3T>l_&+98&(I|vJ3=p0Q{ug$K{37t zq2oh<37?bh8v579@7&hOJG7stN4z?HsJ(xvI1@@|P12)y#8x#nImU-&8Q4^3~>lg*9l2%U~w^HD(H? zP=LXbHVru`LB4N{2Q9`z0(akP=2^<#a4kR2{@S4J&+bjqTb4*63nb5M7E{77;NHf+ z;oDJYesg@brINuKVFDIbP?Vn`fn_F|lP@2LU|76mx-Y*zeBVS8*z?8*y1dmN<1T$%a{~QEDhO#*1N%&l(z8q2h$*;(I5;b;1K8 zRlGsAH0I5vzCV6JhezD%;)Rew?%vIsMYn5SNazAJFPvOLOIrSEIbK zZc+hiddmC3_KefL=n(h~)ks^?pNl zneNPSoKAPk@s+=S_r|zT7LPx1ZWWr#COT~k00SflyyS&TH%@+hqB>#&EKvz*OOVO% zns5wN$-*$+jlRE8=XD&Lgs-l+aTvS&KIC+Si$Okigf)S?q+wm(m@=Jy zC^ky%kV%2``@=wB6djx}O!aQ0gMos*h?wcPAQ%CmLtl?CsaHH99+bq;0)#NRfX}>i;yL}q-nx9n>MhtY5O>ysXu3z$ zI9$tfyF4pVu_61`)1Zb1K^}#dO)RFXBbUudxvbYcUDDsk+0UygHtE(Z7uN;VutDWL zW8#QqQn_?Z63pDoCuSN?#Z~(%>fk| zka3Z7?2^F*7e?a~$UV%i@fX-PUU=kCIq<+m-O^?VQlKwnDzvUnqB_40Jg(7IO1S ztX>nkkCLAb1sSkB=&|D)wy5|89bh$>E_cX>fP>@d!d|%Oemq5!HV5!MmRBWtnUILkE&sWRk@|r-Z%nFGW#G=Whb^+5!AtJmSpo`4fA}D3<&o4}%@zk9$u! zXKfX4im0d_fkG3Va$;k27#uL{qeuwCh5?t2^@3q`*k?6*T-JC2byB0l7Y@*2WH6zt zkPe41R#?sh!|X6w^+JG(EpLZtH8>9rvoVr!F$96?AZ>#Ju=dcz36d9l(ZrDD1z+5= zfn2PrZ_TC_dBK-V9PfAyx7#8T?QM{&o~@2AuC1Q0$-m^OEe*U?RX$J-fm!%yNTuTC z1Kl;zGUKHaPpQ>*=IEp;>Dcbw^%_SX0dE@YQ@(@@Jo9A}e=~|_4^QmxI8Xh2ccxy> z63c)fJ4uB8Mtk|hgPrx>j>Jgr9iI_y*K^W8?meZ~2cD{w5!tuL$H#jWIeDs$UpiYS zkVood>!Qtt7M1P1Vq#;8Z?EiGKHo$g6yILe#jDirrQS>N?bQ>#v#aW6#%P3UTuGcm ze}i<`=rt2tp(^*4Q7if^x<7>?rG8z!vj)CB1v!|MYEBIF1kt_NeS`^Je4 zq=u5l>B9bqUr8jl9rH~SgQ|XE2mxjwcS1w;P&Xc#I3wSq{beG`TN%I;=M91L82@}i zt}1+6n*ZjBGi%l~ha$V+tY$+ry%ecs7RUjY0lsDMs)(*)S0R8Na1KID^45vRb@kx4 z(N9+JDut2ch;p0Z^m^OGIe8U09{(dpm^H9wm1saE5-7%H_E$n|A_J)lWwFPhm%P2K zk27h2`k?b6%?5^4@ZzH7^NxuFjsA7;eD~}mjCN$Fl8*&~h;Qn>bK-*5N;^2|dsYqA z7D=ysT`1Wk-|1ZwXE#2{Ixj`<>hLI&tPRK*l1KtI@18iAS68?w8XYb1fIVw93H!ps z@3NG^_6Ej#HrPq{XVC#mY@6U3u)Oz{-@L8!x@Y&$$G3y`ZLmH_B|RH> zKhFloMuqbI)Yr}yY!i4svLuMnWdxq*PkS=UJbtnq2G9`TOCs4uE-B0Sz=Ts8acRA6 z$>YUpi3!C(vkU(QEJCLL!HKs0NNrMiv85@^nY&J2Y#~}BApjWz!AFPJ(1#{YZa0jw z_}s$$+(JCFxI8n92_qc`34y;4c&m>4RM$T|(M&I&KO4&mn%jTsQ`zJzYs>L}{TFrV zwi5gy@o!&esoNjfKwSc&3d!F}btA#TeYEDhgf=QbL`_W#$e5`WGvzVfHDs{Y#lBwSzqCp*u}LF8A}VS!DcEs&|~&bp{} zL1YY_0VY)DTu#pPu-KcFV2UHMlm&pr2_hS13p@26(dLf`f)I z{!GpCE)7HF%;tr02Li*-PMp%N{X+F#vo~UEK}U6UIJAO+IpIXe&gpRPU~Gs zc2|?(n8H9s*LD^w0)i)~3{g1Z{&zm#evLJECa*`ywXaZYwZ#K%;rNCb_6rlf?8*SS zQ2;Ax>{cEc2UCpy!Kpob$E-MIu{yZt2@8N-VLA9;9B>dZQj0Ex{|J}aF}ikNsyzsZ zT$slY15MCF=9ec(D9?B_xJ%q-4FGe-s6!-$v+G9F;XkO#EoJ71Z|WH$=^jrI;K z70yaw6AYt`hEs@`t4(s%SL+m3yc$Kg2x%3Ag`vLI&m1Ik$5;&ul6^IcGl<|k8i~-b zNtWN&+gBimXmwLY8R%BJuVVt@dq)z_N8VNcM*9kymr}I{0IBT2)$ll?9|yhvH~Xnz znV0X;cqUzoP%nj0azXDSV#<2-t%=9?^BKzuns0)H)r1?uLDfzO6TENN?M|dj6WSz# zY{G`^B;VOkci>BBdx^iCK@yJq?!=+Cw`_HO8zxCdss>^D1{F;r3Zf9?c7AVjs!dSk zLM4(gm~J2?<9@%-YRm5>!^k|mO(zB@BI2-cN;m|+%_&f?f^*T$#Kf&{o#hH z&6XrP!h=G^#D@j*4rtNP_|fK68zC%9LKg~XC|JTQ`s0a(`ZN=nrz(HmoGPyz<~jds z`XA9%%BXB+Q9SkV%6a4|AiAWlg7VD>P6Is{LQyyXacyKGUCN|o`m zA+%xP$zu@cSEBm>TjYBF2*Ve`vpR`? z*+(07J!5QWxw}!9Bta6M*Ix~x4V9|rc@XJ?)x05S_y`#~#LAE%Rr_BC^HB%}(q4%G0ro8k2%2rdimFA%pN85RI^dxNp`?>Q z_6Y~;pNHC-Z^2v(lX$3z_G?c3m!Y;sZlHL#G@i>ACWd+OWWV3du~I~Tt?y>C9s{Nj z1zk-z`7ar2YlutWNeFSLCcXn8=hDgfKG!6~^7RMD3kp~VGJOyi0s(X{8*X#xOGQ8v zbTU{S8?@@>lUv3K=#uzBd=xc8GG7AUxnk>@Cey}%I9OC$(}&xYTi3KQU_1}N-eAz+ z&$O@Fx~3!1d;xbIY6;j=eXp1Y$x^{B8|8e%QY1=kx#L!wJ&#F-HO@K09H~F75n&OQlL1Qij z`pg_%%sf!d8Byse(Q={I)W1WI5al`#!{3Ma+_kTtgkW=dQ60hIRj6TtILb1x+O@YC zd<@XhLegkJe5tq$lzqeGRezVy0b~c!;t|O#hSZK(VLI?TB=d8)(z_;NHwuCPFDvOU z30queIg%@%-Q#eE!BS98e~SEK$yW1ksu^sJ*4KBtsAPZom8TDhEtCB|k5?=U@Pe?{ z!-MU@nttQtCQ~`wH2Lq%V``ekmT^|Qh&1xz3W%>*n4<7sp)o7D|FaIURg3@c<8NpG zXiuL!ZTZkhC2Hpfcl*G4~hLENR%|HG2!GAjbfK7`C-c01rIo-uhw_Eb-UoC|Aw z`)cY`BlMYm^fe9~;wwj_Cj8S-5o@GwkU9Zd*RB0`!iI7PjUEr*mF9!pdS?GcNyP(V z8e?-Pp1qE9+vG)^hJH9^zB8t$lr6XE`xnx+g6PRI5w+pQa$DLgmT6V{&!4W6qWe>X;yJJW8IYdv|Gj+<}Q)QLG&xP1r`DlvKK@w2R zyC#n`@A)zTpkuYozn`Z59)LM`IhsCgDm}5P?U~42A@KmXf?Wrf#@&<8EK-r%++o~h ze7@dY$j(X5&vmz8Rzv<6JfG?cZZ!D4#e zow9f=JF=_oXr%Ajk!j$Ek7JPH&lyrXCItLshT+3MS4jL1B3&KI#2Qkht*Din;Vr{TPe;r*L`U6KkA>O znL!0Z)Y?3T5?Pu27Y4f1S`Tf&1w?}*V${%65eO0L|ys3@cyTU^}g7RiSfuyaZJi*-QRnGtbHb;3p76`oK z7foI^d3i}BxH`AQBcXU;4f)Y(02{#MmUO)k0=|d)x7L9sL0=9+60Jg5uDzE}Ua@Vu z+2Y!oF*pD?2*4tcOkRp*>93f)a@#au^&nnenVnlA7`YTLFW{XSx(mQ05zQuMZ{qg> zk&(Qz|Jg*D#Bs5_Oqf{EjtgHkIdrN`DDAl6(caO)(u7X@>dD8oJUt4xNE3x7G>9cz zC!BxEhWC$Q!^q+|ui1iLgE@vSJP|QR>^t|h!*7yB4mpl+MnU)DhT-dm-=yQC{)adk zlWK5%c&{IRlb*oZfLyso2~53kOh_ zxLDKr>Cbyr^+|DdHkMoj&i86eGhNlWGcMmf^l>_)UUo1D-D# zg0`V-PkUstK{PuT;k!z2ui_gF_l}5(<;w0>5vWUaU*60?pP4~zm|63M(&(eSFgbY7 z$~!HxA=5oFn$A(j_C(yzT-9p+^tpIGS`qUKkeiQ|0a;#<@N!`#Z|VPdCC-V)AmXnH zK>!#9-b&!1`K~%`L2$eW78h450opEWx2plY+*8^SDJS`lXc|d%fTA%nks$M+(tJB^`ID+DSK3tdZ~bXr zowdN1>D2gK`9qr5fGz>bW6an(2!p(1Ynu-Ne4z~GAWIFgnXA2X^4i)5S}8_@eF)T2 z%>hhZTAm|m7!N+ndT*&Flkwv&%R0qTKOfJ?S$PDPKM-Voah3-=K2;n9w?k}##wltRrYx|J8 zf*S;45_$dyCeQ9wOa5~liYu#XVReNyw#v!8s+fP&oItmuVd^-rdRXBHC+FK%S58HC zj8~C-)%Z{I{557j|9w6;4qws)M3kG%dG|w`JoA~FN9)YP+J&sKvK5D$39rD1C;zki zAiF&6_NF>={fxQ9%{cIyl0t|5fj|al>qoY>d3fjHLrV;R+AwPb{zoUDHt^^x58JkN zG`@KC>1vn(j!qmXWa|L?4nEc|M&nQ~JV@3bws*BT67WDu!03?hs$xxleDdPLE#JI8 z%SGMgd-ob~&JHR|uG$A1G_o1%@JayI!0PAHCeNeK=ZSus$)O?B9tu-q*Sz~^6~d0(u3)|oSsO{_GvK%`-=;OH5#rhFH0OdAmj1E83MexJmebS zY8U?Ggjkk?0{rJDr<&`61Rq-$?P?*eoh6Gh1_z7>C{YBEjn8-Z^<`{hsU4bE;UEX= zfRRe{3F*{v6Lpq<-U3K3<4E zz#`$1BVP;ZSoO_E`FMGaLh5;`j68=(~^d@sd7fMsZB)4G zeg9EDUgX70*i6urwG}CY>IaYZ@w(i;#7BuUS^SUn!^tN#+rUkhcNfU92wTl9gaQFv zSv!(G&@60Q3#kl1m^_?a>qq^VxfyU1@)z&s_J>SU#J0!?(d- zDsD!+iV;8tK()ayC)b)MuqZxgvmIR7C{#NN{4q!+Q;YTFSCf0&w_Ca%+WN916J(W^ zAm>ZW1!Av28)W*kKmO6Q@{%TX7bXOx9__7=+E=lzE>Swf20Gj z%K(SRk#8Vo{@clg_T|fu(!ryOf-|U3+ zsYw4LSw!u7-_I0OT+Qt(X-q-Y)eIO5_Z`0V7|=H<;D4Gt0OLI#k~mz$gG1;mm%8S^ zDbOrqT^6y@?C&XuGrE?sI#T>-){Tjj5FLZ6hmeKk{(17f+k`W1CRl^`SgxeZlNcVK zA(XU~N@|~)`WD0Ed$NC+F8)4sjtJJq%Z0z|tOzHN=%rTwY3fvBQ5VKh?iNZN{{swz z%c;nZF2|y|7St*RH2H>&qKW>O$@l!NjHO6E$|>|`L5d**=aV?cP{1=>ymMc^REi9i z;$yc58%U5Mb>x;<1Ds$U%y@vvTu6OF=aQYLw$xbW#55%jiOUi9ib_GPvkEOVL`9H@ zBh47Gyi0fXor0vnP%4lWOcaR@+LzTS>g$0ksUAK=KDu*xouYWU&DhaA(Ua56E9w+Y zM3PCc)P#{OiR=SCfnAvFG}pYYMp1nKP&UG60<013f$M7&MWD&T zryCm3IsvG>p-xd>j8PJe6C}h8=f)aEJ=DL1dk1c_fNY?fY81s@A!`Xe?uZ=r(0h9S zMUmOI6H7o01l7&JytzhE7}y{@z?lTa6QonO)F?_O4om_tsd1tL*nUR;MNQrD2ms^O zfpbN3{ab4kMG%U|4{<+Cdsv>HS*IvDP=Tx@(zyY;-&Uh&LIFe`U08J@=pJwHzo>=! zs!~CO-gUs!&Ay{XQOm-_A@P8Hg9ecMtQtj8gYh{XLV5jQe%@K5Xn=|xIaaRn6EZoC zyJ{5WCgNEt8&88B$h*5n(TH?+VqH-{Bo!vLXV)kS`=(^eOCT}{E$caTidvu%lu|@N zAm{P#>Axtl?Cdh#NFh;H3+mU!y31QQHqSf zO~0TVuuQPgJb>g4H@ri-H_c(_K<*hx?rf{Zj8N(kr?C=9U@Vat4djiSI7Ba08DL}t$O-%zJ0nPv!z<1)bx(&IPwUo-%FOUwWZ zg!~oIPj9MG6cmd*f06eS+?4i6jiRxM#4u274U&B?vftc)QB<~IxHPbTTnGEqeM^m^ zIL~#_!Xzgu!Z-NVIz@2?1yO7PrwU0He_M^BEO}%X@I?E(Jp%Ri8buWsGN+Sma)3Lb z{*D?&1H2M2b%&6x8u-!PS)*vgs}}-Z8?G&ryY5{zio%v*<%TW{?Xb3uJ*S)t+Q3`Mva;5?NbF}x>C@RU~-08Z4+#DF>`};47 z9RU{rcOCMg795Kos8Q5FyVEsrLWA(b!2Mv2qNXG(aT+2m;Bq;Cs76t888ygUVnx~+ zBmQuWqSz3kre{LGVnAT{ks3uIK!yc{=e8mc4kQ8X}PyyUzI`2+lgAFEL`;<^wo z7=UJU7@UvyUsN<3lma;)YYF%|{}VNeV(3}0e}^n7A}{_Y`ze}Z%{;i*flFc&Ku50y zpW1m(fk}?wlnzN1sh?Y%$3iL<>|c)Oj*vcb5U!ZDl}1|9R3YqFL5{XUmK~rL%!&n3 z1UH)>f4cwC!GuK4Iz}+@j*#@7&(tXDgCYeM&Z7up$qYVQqi6yHIGv8*dl87~=lUmS)*j`g(~MbRq4Fl3`acHy|r*J~6_xQyl7fRS`jR{ci*MFT!bV4}zyz>)}` z{x|zCiueh~Zj4h4Su@|UzqPXi^&T5*_wFo0RAd?uK?nKfK~HY!ocub0uy6O@G9El! z@8ojvW(}e+_|8thx8r|RU6|s(;ex~_R3_4yxbnR3)+mdvH5QX7%tN0R^!EVJllF~ivzyzg+LV$aw=+otv(j z`HP)T$qlha3i~>oNyi+Kjzt^6{%Yzfy4vtXK}MTE*JCBgFLyq*V+|$dpnl^Wa6iO} z1zUwb0n83wpI_}fqhss)i>#xz&>uJi(VAkRIFSzYEBy7&{r%LG|Be9T)}enQJayo< z@aw}d1C`2ec3xhX*j+wMe~^@peQSKB5|yF?a@^3cz&u3YM;X68LH$TP;#Nq4fDFN9 z8>`>#ylP|fQNgG5F&|Zk3YorG>KafI3j!ixQ+|2uYrWs*Z%`eC>}z+PLkZT3mFlu-!qs%t@~v4WgtaEOf!aW$haP@M>S9{aiw#>bRpkWgS;pEtV!QRUoUnaF1SW@*J-mCFOkv%Cxvv7q<71bV; z^Km*NLkk%(N%cs_$K;Wn1m>UDGwc%=@7kOm6@9^IPC9&{4m~1Y-ooHR3svDIOw3Dm z{dYb^Nc1T1Lv^O8QG`@gsFc zipKv z3BM(Au+R{&R;=0nmAft-S~oa!;-$8|@IhpR9{h%oZ335!uG)3x`njmg=iCZ8wM~TZ zC1*DgZ6}8InINbJ=*PKw*Sj`rK$N>gd@UIix zynfg5^&ReK#9cpQW5i9foscU*8doGt_DBTXunT^XW!T1MvfDG)@y-8}3P8@Rt}XGX z7ar<@V7^O{N}o=8f;M$P6W;G?4*>Y$x+XH~xDFpi=-cT>IM z01N;n;IEV`92Wkk*DMZp9^F2o$&gN&UT|~0;&7}1!$6q}xJwim<}JGl>G92x3V+6~ zr*CUeT2*+gj#7U=E2^@GI@Yr%Se}ax$I+R~N0v^73~M2t=M$IP3Wzcir;&z!7jXtt zzjfC$HrA)gimKVC>axSj5eGIBb>h$@dh*O&H}%o2&L-vJ{Dmr7T%D=1g~=@Mhm{nz zgE-3Fom{v=88Ln4)VZxUt>|UJ&IRYB0%H*Bx9xgXA6@FQ_xkyIJ^ELEM#9yQe36Id znS=!N@b+DIZ>)3ue8wJ~tA0<&tKmh^xjPaaUUut_T}L}`!j|j4rhcSg#K1thgupFSuQWmaH5wH1T$pgabVni0{RdcNrIM%O-5cU(e!6y zaCaC%Kl4yo;2mmd%tLi0Yvk1djU|vk$PnhQ=WsH0s9R>}weLlBry*hjb)Mj=9q@Uv{oGyGZ|lusSk6($4)w01@u8~yA^H#r z1{1yxQXVYrdAn}dqW*L^5b(&5wn0v*3w5jVjC*(0BaUoyHo&--;I4KMS`G0Z`}gg- zt;IS zU14L{&UNtbh9cU*hQctmpyAeExOH2qz3n!&}$8)<^ulC0C@nIzz zgoV^nBZ)P`B%GU4=(SF$WsrwP@=pv4rOBJ{MZ0eA(p$L^@RDq#yLlBwe~FJ39d7L! z(xHd}Y2pwR+B5UTyB_Y+war?Nr$V_`oyCezYHB|Mhnc4e8gE$uDR+1Enk2iN6mL?S zLNMweie9qo^;^(qx>D_O!y{L(^D$0OU`gmsb8sRn_0nD4RKhlIEgT{Mdwe>bO; zt7^V=B>*r5WQ_odcr#fLFYCJNTRXPVZJ*cIwwL9u2g&7=q6Hfy2y4d;{pgTs2E8%KO-x?7tBCfuIlGIo?e7X8K!DuQHOb0U1XLa8 zRlAh)7CTzyLuD`>)0>Z2W%fjh+3Z@;x`YGl~iuAGh2Oq<;%# zxgVR6WLM~~`K#%fhqWcN`D8tT5(|>oisvc)g6)(Hiy@X*UY9xRYpWI&Hs-9lL3xq8 zFnuc1gn>FX+}B~To`BAEuvi1+DIB=DeNi$;9Ow1BuB_9$?%0Gb8>}%`1xP^d3Ck#cWY^IgIJgQUN<@5{BX|bHU>Hx+ z_9E!XihL$?CcAf^FV0+8l%os6BfV5jX`1 z;~a3#Ip>Ux6FBFba}MwGtEzKO_31kKRJXZzmXTUrd+*w{#=}3!#wNCo!)&tET`&_ZhpKG~Z-q~rApqftB-G|ppT=U&~{-M9le%Rk<9}9%2 z=RooRa|oHzir%y5c<<*k7 zo=GVc)rP^I|D zDIp5OG)(~l80n{nDka2u7dSuPSXB38^_k&Hft!Wzh83GWk{OZx*`Z3oVwSOsIS#QL zA2t04hAYLj9jp%$<{LWl_EJ~mK!`7UnDucu;<~2^5v?+5Vz~u3&A2W4#Lx%aRLASi+dh#di|?MoP(%7C2)?rC-#az7nWmLW6g%=JW*_UCuU3Swj%)d7jemjb zB7+J{Fua!3MLQzZFucFIXR&+VwjIY#>4lT?V#n}sy>SG}jOhIpmKtc#W-J={Q6oNq zJ)rDHxKbl~k~sQndsZ4wE?W(HN?&ud8Y3=OOhAGU4siIu`}&^MHZ#A*ondTMibOl> z2l)E{VVE%a#-8=YOKztljICA#(*b&NnzsXFw%p*Gdo~W?AhWQH{vy6Fe4?Yp9|b}p zgQUkvto-X|Um;^B1_KPwrpXYa%y|_fOUDV5DslFWy>IcdPXe2e-PN}dwVX(YvV}S ze#^~H*aA|@?k}zD%Of_IGvn-aI&dDDNK5+&wF(xQWZ3uXZ9l;jxUCvFJwu}l8UJ9< zagi=Pc(7YLd+r#>42X09-hl}2kzxGdo=eJUCBZWC0SeEiSP8r_i^iTPn-o5bZzAZ$ zaOp*Y0WKsrysHc`N73(;ZRY7%fBmQG8wZJZg$$~LEkj~TuUvki7y#>Xs+2HWjyOI_0*z~??H_fRvRZN!~AP4 zwIE7>3qcYXqQ!(Q`;`;5Z0J6UeJJNJA%#ZiUp4Ws%|lKztyVrrY&nQDfAvyAi*oyD zKQBO}aPSNvYldoRXoXkT^AZ6B9pWFmi>&u#{;+(8B4MW2)Kd#ugd|VU zo@39~v2krJwGg&MX*WnswiV3E^>y{sg2JJN3JySh1r++5YpDf@5?XEn z*(*FXec!)jq6r*XU0bUnKwV+5=PsI0Ko^KY%EmVg{K^cPh4)5HzUC)QI7k;l+QPTqwwg+SVEHPw=a zVmpL*d>Z1SdV4Lkgh()gPBT$%!Pqi(?x?92wgy4_5Jm#~s-HA*Z3BKW_mjj6TtXgVGTzoD;e4_J9C?_?ZT~94YH3KO{ zI7MXAP5U|Z)B@5H&KRQ9sNK7%`P^D+A*cq#E%rt7!*$~DdG*wSh$qKkjt4Qap1$+^ zT593UAp{LJ&}}hUO4g8Ge|fUxsxItp^}6wGg0~8_uj-4ZuSu>_rEw%uV=ThxVMH&TxS+ZjO}GFvrlOrq!5cKt(RoGl23uPZyLj2eg;l=~ zY;i^4n53UXX%*3e^||Wbn+IIa=j5J36jO`~Up_GcC`Q8qFt7{YFo>R*N?$Q?xBnM{v;l0(c=agV1e6K>QGgjUg7!`n zyk=r`^c40{w(oIA5(EI(p#Z1Lu^!djHve7)Nemg+YYCM`8!& z>nE;0qXFNb#hH&L@r=1uby{wDOz3&Fc2b{c{nN4hUkbcWd7Wvz@$rR|;J^V@;K@i? z^c(VMEwl{1Cx9aKP9VRf8oA}<4HHcrwDzlMm(8QJ+!dsU;^6`AspVx3&?3h>VT(rC zIV9;DCz@=EakT2#;31=O>ts(uOdA=Bh!}-sy=mf~2zHn3P>Fcw^3p&-&dRj$=y@wwN53KS_?gyq;_wSuu=89WyGjkDDAi zbf&-yT1A|>wx&)~D=3pCnJ*wrPzI!CJZ(_nBErXF1nAIz%Y@r{s#LMSTTah$xDlBz zo)e<82cbb|lBhM?Z=Ja2jO{C6HWSK7f%R1#&!uZCOLKYqkMs9)_$%#NJ9Oee`Bz0c zx%e&7Q_g=QLnN1;pZ83h_FRo54*Khi+qdmfJ8-fyVuoe}Rs+j5`|T5>`lMo(2*fG& z1ZxXOE_lbtB}Py#Xrf5ga$>N(caB^lYXmtuk^?@;l)y~hHE~aFbeoHw3$CeR@XOF- zh5(PTT3*5V4AK1hp<T?j6jY=9mtowO&JvUR)%&)`fvc^Q}h?%fqL)Tcm(qyR4ed5Ah}eWD`ZC zUa&WbK0MLXFK!jv`;uAgzO6^{mXvOl9c)_4a507{xj%6bM(NrPjgL$q(8fv)&bC!> zvn^eY1*JRXw&(MP_3EPLO){~pP`qygHX$34{EtpFDei-{Y5P&7^?cr@-knuG40wDk z2qURDHnYkGADg(n(OD%?*cL~!6e<{~=Q!Z3b_hC|18BN@Qs&=j}uoAo4#kF*jtv2|o7AG-+iGhoe>t=3@;^)`=aME9l9q=>Cbr z`FfQfY8uCF`P)`-FL>F;L2VudNgRfKynPb*Y;OF?iN|&s0Yj)*mZn=v#j-gjFxQ5U zfhIZ0Y6m~_Pwi~=RP0O4HgZu~0AcXyovj`lQxZi`{E)!&FlPVE4p%Q27YDQsw^Z21 z)@LVnTEP_4H#V5;&LYb6$paIc+m2-Ytm&oobKCO`=4N?)#8nD|UhTs?55Rc@503lI z%cK67aiA&R+8p>uuM%}}Aouw2ZdLlZoo_+p7_MzF20UUEf%^Q!SzTs+-opnEw)3*s zkqt~1z^*wgciQ>FP^Fmk01ynA!vv2Ut-d%^Dd@;X29}{{l8}7$(=Sc@?=Ek2;pRr> zQMbCeK2IcZL++Da2H3}yl>k1>8TI9f_jM0{oRH`T5~b&8eP;5Q&Gn5e_kH5P@dK9} zI6u30Rz*N$f7ELkLq!yW=a=+`I1Z%?SFpuoQvSqpGhpQh(tfZg5 zG4apUEh=?8D(_Xl(~NwB5qF?L6GVr09U9R$CmvPx`&%O4Rlkr2{u^lk4o=u=g$~x= z38_WPX50JLL}g3*EjeCUSxi<=aox_Y<5B~OaZI}iM&r$dR=xS{iT95A6Kz-AJaGQD zAysI5ZTopU_^V-*(f(P%09oi!lF|^KOkjLx;{IN*(PgzjOcPAcK-J0gi?(#~dO}4s_)+*K9ceRx&Y=^miz_v!Q;(I&Z0LX0UjuBDw z@M5#=?@wG+=T~iYLHRRaz05v~A{9|~{7&2-Ok7&rg$E7tA3P{bS5!q-MEah|7rFTN zA_m6U3Plw=`r(Amk7NW(2K=ba=PuIgt4RB0xxb8rO+A8*w6WXf{=k_*TR*C)9$y3l z4TV(=o{!w*empVXY*#<;Q<`_p=SuHW{wijSrWf%&x-z08j%-d~rR2J}^J10#vxyTOqVPRu zb2(tZ>J3~6m8jH2usg7SURQr$$cX_o2C52+Pp*cSK8KG5^p*%v%vjHhlg8F_;Diu(j z>-?t1x-hnM17;q~S(F!J@3#}D^7ksG28MdS((~Lm;*}*?!^&^T$oA372@*+mBCzs1 z;=}t-v_jPt3HuPEUJEHx6$YHlZ0GmAABl{;KTp&w6ZV&$6|mdM!0tDx(JmAA*NH1T%Y=2{`b%yy zBl>e;lwUb`@H};TWpm>aQ#1*h5V1yF@bDt0#wSj#H1)qCAqfF1LlW6Gb!1+-_aP%y zcGcd7lkIk@{{GDjS2B-q5%M1*nqVSLtfH&;jwWyR_`P+=n_aWF*H(bRo!B1T%|7oTO=`1;>rwZ+~z>Kcz*l0kNd2c;}Yq#t@Ip9d@ck$DK z26Ljoj*_*)CG-hBYib`V{nnHK<%9pK6!_GXpy#c7Pj*sHX|ATj$);G4R9z3#P3WB{ z!-h|6u23znZJEGp8*`~zSj_M@9x9hsh!s!5v@>*aTOZE|ZXN=$@8fQoa9p~*k7r`r zv=LN+e2A5wl?He8^9<)BFz3ugY9V(1q&}X(7!1dIJ}hTn^bD;#`*{YfKFF601VWdF zVLo~92>3`&bPFDBhkgtfbC@tVt0%!T_c~>m znBd}0fV6F3+A>WzI@L^(5V2As+E5SNzU*NwI;C=Sq z|5^R;0|^@kw^bALwlE>$cDVctjj=1TyF7mW;>@T=o;vk?P_C??s2hr0bt-TiPD$vW@Aj) z@}V6-5{pwlar%ngY>b5-tidogO`FJop}F#~4~pibANes170-I--v3h^DvMiB znQIuWifL(ui=r((l@Pr2Bb7G_qlFv`J>!X0+ySwA_?Z?2bX*1AGi*Uz?E`LU+^SR0k39dq!xp3@ zW`w9A{tVcmkI0T+R*T`w>7zDdPPUQ%T!uo!#cqf;o6l6k#}_<$sxvT_y_= zd8}7K1EWHe|p%0z@R{hCme$YlpbIIvl5 z^NYh41iB5@9p-YZ3W=%Jmxe7U#(5XWR77$LcvEV8dDwzbZ$a!PgStncn&PhvT@bw- zvbYdx1KANeUmdm}jT*3rd?)HiTCr$;ZPz+WFW) zAsM6U@{Qq}hPoIc_K5o9vSTFQ+KzA3W`7kZtN68 z1OUwOx0=QE+L0@Z6S-U{r?4n++hG!Yd+*U+$EcN6aL(ephbs;L%ULS_%RF+z%t00l z!Y5G@$KM&DEI>RVlx2LUAYBH^{qEj#dmMl}H%r3Ph?067{S)m)-y6OtJU)mHF{^n) z#D<*j4__3b+YV5qml z3Y$8QczlHL3Cpr?{CI?-Vzk4x1(%d@PXm84d{K~!S+Xosr^q)$j{fQJMQKMcxfUh~ zd`QlZKifMN;Hl*iC{{?z!|Fu@I{o>0ina0VWyx?PK!iwE^oubS3x$jSL-Gg_4179% zIi6w(rXbNkj(~eYeBaZb7g@UI)9tKaZ(c z&^{pTe2;wtP)YokaTN;>l0Y%na>53d|JS|$)B!b$EmY3oSW~CwR@Sg$UAb(NbHzNi zGeqeykEU@1Gu4%o=X5AytI3o&N1cKZg7`HIMhZga%p%)}C=D0R*j86fZeOI2HMo*x zrsD-GYiJHF{HMsi9Xckd=H=oif-1o72qK;<Y$% z4sZks0Kz0vpz!tMC;vw)Muk-oA-x64r@#R5BjnkDL_xel2K<`I{zQlnS#VAA^%79S zATzyo@?ZJ{l{NeG1aRFF;EXq2*ZMNrgibuBMG@HqQnm!juA5x#eW-3z8XMH5EbP`3SLImo>fur*2w)`_h+W-QX=^_elYHsZ}Ovc+Q z8C16^tEY@cFim2>fOd#4X`4gdjrG)`LSF(Zeip)T+?#5t#S%+e7T^d=BDs6qTuUwD z@a>^pm*Apj6Ct{#o?4I;HY8KVS%71_@r0UcNdO$7gJO!ltQFl_ODztyf@Pu}r?bo?2oXem-j^AD@)Jbw@3=h+Qhj zZQxYm6XeBDs;3s@i?Q{D6z-y7?k0EEQj1S!19}qf2^?`j(muJCS{TQq1vH5>+a*`% zKBb;oxUgxkrVtMaI=aSPwbT-tQEbBvjlo-?F7Di2Pc0mef(V5LJmw7@1W&D{77z}$ zg%GBQWW&TVpH@#TT=CFcMW7C2?!=9rUP~?L-fCp2oD_i$DDB=owba5{8dNK`CP*0I zpy)oMo?2WII;bRo3WuL)rO&LVmVnF{M^ZrE5j&aptXgV;s|`X95QjjA(SCn+J+*`+ zXt@R8YQyouNuN_oEu9%fw!X`OQ$Cv zmHB+1SV86ItQ9(WAzl!Rn?kj)UAH4Z(F;K>AoYj^6YjouvYQN1PQ=(s3dT_#H*2!J z*u2oG=8GngwJjtr;zhNvw7xTX>Ik%8ha7OX;jB*b>&26ow{=mW-Xjr&<%Z1MGb=@b2+<9TGbRf;oPdwbqDIDjEa9>!>ew0xmO`_3a#;)zHi-H?SyO^pQ6gH;|xBG@%f|Ly?5$XlI*p z6Y^d$d8*S_DSgEyMG&a3Zzzi6k34Wm>l-d@ihLq9V+;Vd&$be-_}p2;SJqu~iwMKm zA;gYkDAJ|KFT84UASL=PlDn^-+^Dzr&{L7FBjO4(n^+7Y5^EHaO#3#Ogb%-*e%DUjQv7^|0eee`vUGtiMVKqc&nE8lMhL8ryr* z4pfOyvl)UBM$JQ5_;0Si%2b^5k_2xlb`o3;-!ggQ8Hd(Z6l?6sxoClyFaKR#S(Kfe zRC=M3)Mey1JVy>59Nd<~G<>}74UX@yyPU*->*R^fO(|_@mA`blxvPaKghqUJ!3J@g z4vn`>UQqc&_J%!+Wz8WmAF(5$2?-$w`NXdK^JAUUR)(iQ_*!oDPj@$ZMB6<}A@&+KpKF&l2 ztn#jLoPf_+SeEQZmCFdeqS-%DHJyVHFx)A}L^Cne@1DH5_0iPHHJz>TJ2uwQ!Uo0( zAszfI;Lzwjlb1F+x2iD}pRMiJTHg(|Qk=iJ)FXCeqcii~$%{rTn(hN<0r-jNF!?fI zmErp)N8p=-MnIGY@CJwF$Th9^Pd;`GTdi2gb{YtX3l{&#yF@TwQ3kT%(6M#e@dqYv zX{whl>7_`ot`L`8mk`ZnVQx;0F2QFMbdueq;+(gjZ=jF`^eGr$xW$L5rYgr$fysVJ4 zE5CYvpso0aMxPubrKLCEa%ah;C3QN|bEnkWGSt~C=8BT2O*zQtMdU^iK1-SUAD+BD zx15MJ7Zx)yl_j+i&uh%7HkVK43C5%A=)PhKv5{SPa`%antwiIDwf({K^P_)*zK zi=1B}A&!9$-!0l;oe`<`WE1i9l{FM`3)7S%@}uL~Pb9%97lmTLa?5^0{=9nMBPyo8rulIwY|R zmwbS2exm03La@GQ0@yeLka=|N`zQaSj`z#859b!eCTrdR*X>%6<;9r=sQ)K-piV(% zLjDmc1m9C`@TncB6Tmox0d^!j&COWbpWcx=5moRp^9&(E665&H4%7*g9fXIAkOe_d zLZF}BfjU970BphLk_)PbIno35)F~`>wYr+yWN~mM*T5DRLf%PS@4+3YGhqw?vVa-k$KrBx0CRP-Y8GK;}>g1%RqBzxDjtNj| z^NTxBCk!bgibJ4S1XvL#{n8H93E0D-UJMvxKqZd*L8CI9*A4%De_EkR_VJ#j3Gt*_N{$j+mZrfDP?43hU0iJC-xz1GSgP62si ze?Uyt#k|x@zFB8w7MHXTH$C*f=+P+pR-KhO06}4Y!>^6ee+`{) z*I5~eUN$FG(va=t8ft#0*2)O)`?13z903BTh~KTVGH`bmd|3`QFt3S^eXq{SVvvh& z0;mL1ox8N7u!A*Kne!HGTV zM|D;P*bugaEqZP2J1Y5cot0rwgPI&t7pO97+jo9aXJuF|qEiI%)Dow#SpBq~$}%^e zc@`_!qX@-8G~oZIKdZGe#CVVgV^8WzHqc2KFhw$|EM>1=FNLhuPBkR9W?dTQIi z=YeFEtbx=DweLLO_HP@GkYcc8gfJtPkjH zYX&LN+=UE^yf`#w;Ku5vy6Zz~%S>FL5GaSD2z7JK^_c)@nCT>C04Bwzx~1m&ESw92 zl)5nbMjADKLf!R2Z!}1mI(Ed-%!zNE8X@zKl7t9pJ1BTqz-aUnYi>MN_253-lwb>y zMlZds?)u2(qitb_zRl4xac-}~U{!!W2o!5GxufR#i2JihVO@vhJoNGCNwwDp zMZx3}l5lPg67$Zw>w{_KL$^)P`?W!4KDqAt045MlHP?sa5R~m8;Qu6P z9p6=ReZUIIXCNTMbRg5|-(7coC=U3*lMwhY<>LC(y6YpfD%^#Xupj`{;Ax{Qj*68X z=}Oe*&=cUm`1G0^&)R_u4?^Ffl!>O?J$2Vd2qDr|pfCmI(rrGY?)nIi;9AaNg*^hb zKC|ZfBEFe}rk>AcX%XmoR^9b+WOP`KF&~Dw;F-^^yS~%`AAzpLQE7v*orZ$89u-6`jAAA@sNU1uAmJ? zFQ~ab%`9O0Y1D8e8x+5=?)p4TDWPCF364lCGxye9UrHoS8;YqACIAKWi|Vc~6)vy| zWzGu#Hg`w?<_x{P{6C(KWFXAuq#yjSj6#Rwch zE`gAqh$*)Bs-3FXwNRaNxf|j<>7bAL>Yb_>St<-V4AenW`#uCQEIQR{yFPE`zM%nA%5h#|8I`TRHR zRK++>8=PV!wZZo5SZ~~^is2DC*ae`K%7rPm?KkaI#ekoX7D^R)ejkxa_su(3u@12O z0U1KRpY!lrrf%v@;_u=lpHu2HN_ktZpecoRWMO?(SQST?(-kNNWk+u0q7A6$AYMIW zN}TkqQ`huv&A^fZ$MjmG4QDN41PTY9b_fjy-gde|ygr1Airsp^cram@sJBhs-n$*6 z^-6W4%AMl?Hw+Txg|4A+oebYT^^Ce3)mwa_+(4y6A0I=TRH&HM8}FFISBPTr(S=?p|(*p2Es)J#&{wkF^-yUzm}?eU8!jvU^lazv zeyB9uPBl8dNX(^3Ss^m@o`*`qaqvXoEyTG)Qn)I9??a{Gz7;bwkx3PxNNAhyd#E%# zN@%ktxMX1d82RS=A1V!pKhM<>MI(ed4L6NH@K9+uQsp*CLPY`z{SiC(;6tV1u&1I3 zV@?D8eh}%_haNHw_py+O(es2Lfa8t(;fGAaIeVgYoR}!a!CdG^^P@8+}Uv+snSIEd&(OXWbh*zV0ibFN9R_5Brrmm{34QJy9x7MI$mm7gD zfRSL=#+-p*WUBk79@*tpjkjHZ!s`5z+2?y{^+Baf!o?<8dIMaAzr>6e1%X>9P z&vqxAL554=pfgX(-AHZtZZ1?GBQZZ+=X5OhKzTaS0a$!sor}14tPJ&;skbzBDAx7* zI+_6o529|8oEgU}o68$w;(X@j#{A0KQIRZ@PF+S#uA3|cLJob|Bl|p%5u7JlFJiX67n?lC35RVO(mIASqV%yJQiaMNmpD}BXr)9&rYpXDzi1e zT*teA5^Vb#mWWH--E83uzX?Z<%bVW-Eu}{ zF+;ZfeB?%!PZF;{f$+r2WqLXL<3*X=+@Xt+fNOs%gp1**uq6AWuM+cfQxA-_Jr}7{ z`7|sB($VC=wkBpnYWt6~mY=yK!>{7?)kJDZ(l3Z$?tXaszT> zcvpxc+vlgg+2hT+><*}!_SGD32|)`2jalAiONFHAkQvW3m@)a5NpdthZ5 zt%=dx`w$1m=@^L>@{l0(qA%`j^|4PNHVsTNXAa0}=Sx%nUD@(}-oDp2ZoPfE{}FQ~ z?5==zgKh%5{^hC1HYAU>iLUH-h)R!$dVY24$!ByfYm`^HDA)2joQu326OFgi#oVr1qqIQq*s2x8Gh1u(Yg5RiKgTmQ#X#-C#B)vPoI?M zfZ^f0V`CeQ?L6lS2 zb1;T>ZH&;8*#6ekxB7XtE@Q8+e%_JyEPq0Wa{vd{MF$GT9x!Y0tg+<_NAx>Wk82F6t-^en zd|&@7NyWphNm^bN0T$>4Bn37>T)?g1yHiKIG@$#k2y6*;TG%@&TB+PNzc+Pva|Bd0 zXr#9(M(kOIkYn$aQ71`)8H~a716XB!f9ebMwQc)JuClpX=GjPdkCY?AiQx4)pmM@c zKbTr6#v;mH%j+tZ5yk% z`r*_@xAL|~)m65ss>XO_3I3U$1H(19rcNM!G-0yH4e!OOUz7}54_bp*=f_Uk`RasXM@oA@zh1#-eg-lE5j}jKS%&+ z(w=xkU_#el zUO2#dy1t`;QaB)nE&pdzkLcEf?kk6ZpC<(g)RJB^lAljKy~Y;h$B(w* zwPmqy`?oV$pD)i&2`9iz9JnYy^cQgeuJQQ*-BQAq?V`)w9$YpGC7i;ssDrYve=~Jg zf4$LV==S+}{uaBYJWwL`FAEAOF7zM4cHHvdx)9mT>bekQ z6>cncREcsB_<>3XmeKnC)a4!bNSe431Hf3x+$|5UT#;LeUxKIzjv&dGcpRf#=(Pq*FXi>WrsfCIaFy3_Sfi-Ju5&Hc906d zY`Ce$c9&x!x=;E~Q}>?H@fEiBT^qEfp_j+i{3Ep$nI^dmty7j>7+QJf=$d_|z z$Tfw}MdI@xv(83MDNLB$fS_4-mHX$ZBOP0s|3j>W7Jhhz#M7xP`y}5i(x#~VD6Bcf zXDIs1)IW4AX3IBw*xzT(2$W{^R~XW#s83tbU#E`uem;}w#hf)RZbs+h@Ud`S@mFaT zkcbfZw*=)xJn16y%IRLMDn4}4D%6;K)XT+k!A~6O(dAJCY>pNmi9nZ zNN}t|vlrUFX_;3~6YO7OvaN1_z!JN9&c$=9i=4+^9-x-&>oh0s)-KIvr)@ZSZqZB;)*B5O7>2Y5e%&H^Y+Ul=z|U(nM$ zDQ`@XMLTPeb({`pB-KI_sc*~2>JODD6oYS?KHi^~MAuSHu)R=mLydZ!Fo|xSKG7_- z;_6?VY9+tbwb7=onl;>k zoeBLu0^zCj6Q(b2wx;S3*KczySUpS~O{mLMQIgy`eQ9I5U#{6k7nX_b;eYuq`CsNkR4mx7p;{QcOYA&xd_|)_5GJUCA=ZV1U>w~x zzM|QPLk`&%m_cz%vu+<>(J2O@@HC-@Cd3!CcgJ*esQTMqz(6=R8wYv5bZued^jv-HwXMd0tmsBNcRzxxqWGn;sNz;1NO7g=om25p~;zLPCF)%ISCGnlp z3sO%r7Li$1Ezr_r;bayVJd*vF0kkymI~hJ|!=^?#M-+R4@X0mSg;A`fRg|I>n*!SL zo-%#k-}O4!6ldJC)^xJ4abhLAyW|P;{8h!WU@qH*=Qgfr#jKjat8>+IvZ(XN4;|Xl zjoGGmeBtD>+SpvvQe3%{8^11{`bTheUmaUBl|uR^1NB#P;3PCh`nlV?rWY)ZJMmsT#9lTNJQN7%?3 zaRDRDY(9JXAKF_AlmZwhhz1KT&IB z7h{BI#bup5bAbt>Uk|8?E2~b7@I}*27^ljBdAV~{-<6jix_CLp>r!Y`ayTrzRvwVJ z(t-RW)jqR?IDmBuR^^T|@Ev>c^y3>Ncp*FHY+(FWgqZqn*0v`fv6-CA4B9$%47oys zwU#^^r&H{uUow4dqZtV+T1<|Pc3i$9eye>qW80I(e7=NYIyD6EMrI0xXVEZDqu`~} z_1lPACU-F06dYIBC-%#x2euJ~438K$W?dll6qwwX*WYTBFerC0WLUZPLdSc>4pb>l z7x*M&O>G2;6~1x@s>GVnQGNaP;j2#!T~d*TrRd^~vV^bM_pUZO8wi1pm++Df{xSif;8%O7^`T&^rb0|T>O zH+{TuRNB^((t)Y^cbW$%z9Wfi5=ahf8&~evPoH1?#MWb2_3y|9kPm}lkSp9k1#9XJ z)8q1be&h5Al90e0$y=o%=O7HR0{czVuj!l^seU;+;G#USc_jPr_>{_bZ=e~AY)TeK zyF|x_HiLgWFv8EW@Ubfa&TJPZZ{)f5n>pP!E;^-cqxb!09M=s%f40y~f&jf!i1Xq+ zLQEne!!C{Cv8DC9#t~5H&$rjawg$V-Ft$Mv!oz;|&Q*;HRf?vHN%V$48R>hb@riA$ zKx(j%*;uA|%(Jw%4n6&?Ur~kjMt*O{*+FRXn4Gw@;0`ZH$4ySgMTJM`~ns2v1 z)XDF;{rAN28JE?>GMNi7UK3p0-apD#0aq&Yk&sp>*hNX|eV~zOOP7dnE^m_eFGDG^ zpB~ZC=E>~txoKJfOHuYya&{q%1vBz+v4R-qeQ>bN(6*W-AzE*dOG1D|K}NQW4^8i= znK6W+m{=E*_Q*RS>i6MMI+%NS=mmH_#K`BNfcTN=f2mlxwk-TrOWLv0%Afx`BY{{_ z0Q$j)c@=O?@jtq={X_r&_OHYPpy;D6@UiLtQ@mPf>)P^WrJpy}>hg;%DquYG7!#9< z!)2T|v_PqNWPDVrltdu!oBsE)RI$1lLC&B8R&YYPM2k>t(Xco_KKq|;AK-_hLMy2qLp7dZ(?LZmIe zJC21>n7;0Vu&0oB`!afsGuQca0=Y$r@VJ6tiSzk{V9$>xQI6(;rr)3iy@cP-y>*Nu+sI21o&8wWbah_J|ApP=V1q{uj2j&jU^*3Yk!ioWNVKz{J)30O$ zh-CwNBZY;WiAu1W;&J%k-$I)}C4i1p-1q>-IritKF@`Tz%Z6ooRX?2%HtNK@D$R>A zb`(x=80aLVoW*i4NTYIuP_pu;!8Rz9?0rN?epdyIP=zgdm`2O^NcNxi9z;te7b9Is6DV&i;oTJMl zrKUdYpN#_-8IpD{x4_pJ)Pd+4HzeW^uy^F z^={$NOQ)Q|n=9w}>Wb#dzJ7qeotc25%dQ;RNg>0gmp5l4HWO1T`CqI?jO0ht&)#yL z?S$kw)(Dm4YgvX+Yzp!m&qaXFSIb1r*9z61;%;_&JriQhw~~@(&z3cRS)T%JRVWF~ zqaKO~nn$(;QaHiBA5TBA(VwMQ$EZ2-V`~d5YdMAi8b+ZD(+QUYK#D^iCf69)k_fEJUDYa$4QpEK->)6KT>n=Kpd`}Nz* z<_C>oRLDw#cckb0cJhnq$8K+8V;(gdIY9R{o-Htith41VvYw==nnSirpOj7m#mA^9sMROsT^NQhf-)utRHBS&>iwR4 zX6G`-)|f&!ust;5TR^%MY%BEJh(bGmn7+J^#&nMibnS{pC;+w(TJFft5o`{;K>x9} zX`IUiwohYROUOjpcssMya&P<7^wS%kp`3yluK&v=^bZ3pj}ny6$P8ep&Gj3!iu>p3 z#}(hDTz3AW(lqY1%2qwx8m8rC77AOGk{S#F5AHc5g zn&YD7dit-^N4vD(Sl5+Sp-hN@t-%?@GjNN!a^{Aruf6Scx-0?Pk4D`)x4AC51~zk` z*T}!4nP@pz?P6P?x@#Mes|eVL$0_#enVU!Lm+ebq_kJmldJ!ZdR?Kp3g=FRR<7XOs zdpU;PoRhsqd-ho!mszrXG?Yu|_)*G(f^&p&V?5eaM2IPI zuAgbfY0G6bJEco&w$Ise2|aqKIe|HWLUeRY%%XkFT7ny9mK(T{5*wx2o{pom;-Tub z*mO{82(YAN8MMgy-#Bw-#j_=NN`*$NlgMhy&4=K-4Yl;9nWhL(snMk}7S`w5D``S0 zA-{Ws5Wqm8Xb@<9^UPgMC7DubLv;aTqFr3|q8yBP;Z}XSYGw-F5=f|+J{eq*5_E2v zd4AWXbr~(CvD@Agf{+}%o#jyt1PW0>k1VMszYFns=8B3+nmyR1nWaHpQ9^4(HOH^0 z?nHRC5!<(7RIhH`xvDjC5lDk1aU59!i+SSA|E*|qKX2Xri;Y zsM}_^xpw3r4-q6ReTr6)u-Wgz^ue5(T)u4)c`$FE+36T1u*Dea77!~3F;o@bF*6K$ z5hG|b@enPQebQ9clV+aNI5br8w+8&0#Tl=vq+U$0^0&qeBDD}t5Gys$OU*lndQ}WU zu{7jW4V1HdWjuMfQX-Ic7(KWeDvKHErwmmJC$uDu9G!ARAe-yoHB>1Wl!TxM(KZ!A zrKRtlAtlst4&<|}5$G07mhAy#vuOepT!i?aI@sfmG9emZU=%q-a6;>8gFTJ{ryD`U zMYa;pN!xq+%!O@&o@#SV35IMN)B6Nrq>61ZAP}fIZh9t0aQHvpGxMK~1!)`ApgE9x z?&#YdZLLS;J64!-{ZyC;0P7+A<2_@hNo(C!LTP8NcnxyXLHz7pY6oI>G(&_}*@Kbee9p}EqxDC{PPnaKTm4a9Be5ERO$|DR0DX!O z^>bOsJ9cSv)QtFP`W!;d?`C6XizazWrZn#pYCXwFr z)bnRv)kimV`Ih|*tA}8pmB+tWHM{f`jCybaX83}cCi_?Jg`IMYy$4xwhUr#FYetrL z1TJZ@kH{@IK3O257tS+K=|G-VE{= zEgCz3%;2jR?c{4#$Ae*?Ii^XT632TRNyZn?+}$|Tc6-le&v%(gr44JKfzet5k$wmq zK@1XfFk=5De@ktHJfi}i6CG_#{P?9a%{cm~{Z?9m2I{x+6vy5(!j~0v7AC`lfL}Iq z&$vG8V9o20e?f^)C1@VRHlPuhw=Zu6gZt{f?wOcwMYI;6MoPvZ6GAG6t0@6U?S`*t zEr(UNv3`dB_CBgA=_0+1Ax@m*(aT@Yhx_5DxK}E%@$k)8w$_QNa+)pbxce95sOn*f z{`H|Sg2WvzWJo^Q2zqn>ebvm>%`=m#;;{8@RO851`FQIymG_AlDH+0CkY*J~TGx2> z%p<#&(*5?}au*|7hL^0wgHrD`GtaH{or)u1fr#LB>t=50vlseX`@1%_^_iQiJ~Gf80w9^%3jOxP zc>ON7Cn5ZRf<2~87UytNy@AQt^_`j{zf1p=7KpB8wfd*LKEw{eQ@~Dsf+-fN9dDd@ zZS&CE{-Fnz*RPt(ozJ`NV|mLpq5U6Ebde6fcy)1M`Lc7gJ_jE3O7k|+Uc`}=Q_GdV zxK(YuI!2DG70?y&?o@#pC+?eO-qmNfjp0i^g!`~O^sw;&Xo?b^a(ys7(VJ)fv#DzP z7&bEjH26_55a|4L`miV~#q zV`@!=m7B{FQatdC#Pl?TP-E)1?qJ>QO_LznaAbVi3+K75pteOBA}T3A&D}tgcJPn$YJqQ zfFPPHJ)fseuWW8yVr0Xais_^{d0ovVEFRuI)Y$(`lhS*QrK43t+ zeANeL%#QuAA7T^><2=^Tfewk_U`SvkD*oV1p?{>-))ZP5U8Ex(ed2#jULd0Bxp;&^ z!ho9|I$K!5a0&U)jF&s=7Ps4#<;(RNDIHPjK6J4}K1IHpCZNS)xhjc06z$`{@IKt{ zgMmc|3R)_0Ei!wl`;nOu6qjtaL{A(%kX6>93O_n?UQ^bjgoY@NutH2I-b?h}p&GQw zzNc7q(X~)Stpv%t^kXv@HH%BS2yt~U)WZlbvDn2eLqRjVZ|47LPTE8-Zm4VmgZNkx zZDS~iHVRo0Xmr-0#Qk{J-xl~Ni=!i42p`(`CrZD)hT3;tG}g)DvNw;nvEd-N;A1z8 zoNj#ojM;1n^J+1f+uk0~(IL@7i2`(RaOo#*}GQU1J z8|+`L=+k{X6WIVM5)@g5|Ks_=XG+iLrBwvZ^S6=(veCb&W&i<5wC|!LkIU(2XC7Ai z=V()UAzx7Ek*T#qvFAh|oJ67hK&kkwb4#T+y4c6+z*V8kj*UpQ89g|2Le`GFL>7|c ztGHhztU*T(A2>Io#Lu(BWXqE*HAfC#q|-y^9>|oY0GV$fXaV45K5o0UDQ8uqm zozUokyhJn%4AKOIe+2#DTVG^WR`qE=CDNVQdN$9d%O($llGtS6#mSdOD6}awjI|@V z`Ovn|G(p`Y{PN84ps(`+}(qT;X^ZunVW#iL;f((9^xT$cY z|LV-812p!`^?bZGK9yRZYmVgkD3f=>vD4K`V+HrMnSUKi(S=bI(HXp{BNu2fpv@rs z`pi;uHdL?rZ7LuGDsemDbXfw>c!PRM+UgrK8x1mVXTZH|HltO`pm#hKAo2-qFp1J{ z&iub1t;LCIO`V#{Gyw6jUtsw-iCGZ?g&}P-l@S}z9^0((t(kvne}E8x=mv`42F2w1 z({m|G=Bu0Q^AwRLv55tm3CWf#hhu(w=7N5T;F7vB*C-A#X2yc}4^W_w4}1z&$RS`0 zcqIJJs0C`IiGUa3Gzf?Vt-$ZjJgOXX?oYhAc?v2=c2OrMEf!0Z%`m(u`5rKZEzTub z&t;2t(I?qASYOrgT&BU2o0=Tw@8_WGQW%?*f3?#3B(pduJwI=uI3KgIiLFPfyzu+G z)DBe6;4~U+=0Ox#+WEoEW%>#mZAv`Q=8rSYzG%deZ zZuzb5i{H`Q?XmnszKHUX%1a*GIWE2UECf*VU_bqOHycBj;58Bg6BqF-W&dV38-oWK zdfSMZi>MbyOuyaD#vpHj02hvE*u=3pMZcRlcl!p}pOu#+66s!2AqH&l*!%qmMWG7D zI+7rU!Y$ZL{xEZUAs>fGo5B`CF~dz~;0cwV-rCB@(KTlkhSTR46>OhgzR+(uT;tiG zAeF~|mo8#Mk#N~D7eYm3UOT(lUcwj}u)R+)GJ(ngHrB;$ z76|xtv-5}YcxirJVu4+7ouLqF}r2$?uOV&W>gVRm`j3~rkO$JTVZfP=Km-y&eVCA!{z zNJ87c6mRD`&o+m2IL@>nCCwXW|F!7GmDN1qePQ-rKEN=`x*Wu@k9A{69;xHUH_i5l zHH3)ICoa)i{s&9W;O5zZV+|Ho2^lfLL)M)$&Mku%LG~&DN`WXh5);a?pD;UOxWWr< zj4v?Wk-ZYK!mXng=mX8f%^-0?EMhnjJaNS{7!>tx?<3BA1yba^(bhTqE(Y z?j-gLQdZwFduy?lZ!5oL^W9u+%FED};6c6xcPZk$m6gjjR~t6nm zpFE~cuk%5+bOIJzia?-FkYB~x<0-R`8-Kk=7S>nQMm&GkB1WHW4e)K;&K>elW+1mZ z_paIhs;>bOb84#}2Sv*j*ale{?1Q|!XRmA@m(BhgzUPZ|{z&vFy>N0~5Ig0M074EY zAsdK0isximo;rJXdm9>aZ)1gYw#>my(0t$qRTonzXdWkjzS;hLNFgJ10>lG3DHea@ zX|uZ&@q`QLz>5WQ89)%WpT0}&;JVLR;d3no?L(gWp4oW&{dUj*@KM>t%fSw=zQW*F z9!}sfj;ha?UF>io$^`8Rx{0p+A^Zl1Iu+sMJ)1Q9FdFYCo&jAtJ!PNpm(daBgRR^qxKV3BUlr@4C!x7=}d5?dJ?$1W7xD zvSGL(NXOO4f9|MTG&y6>a*=yRaT!3r|GZHPj3FeUC+l%K5!C?a`LoCK6J!Nks90bN zQN=~kfo4g$L@kOzCdkNax0Hoo9!2QL2J6J}B(-8ozhJhwH?OxnoavS1iyK9e>dw42 z<-ko8msAYCyfN7w&wk09O%Vzy@)x~ftLi5=`E~5VPfe$tZ0cjs0X?z^@ z%lm#3qa5_hNkd{$i0Xm&ie1{dINq7K2m*zI=p7{XD|e|K=(;%o+fh-+BRz_(R}n!0 zt06K6JuEZw1#M-O50m{ip@7ZBLl?;AxwI*sG%+UJ3@U`j5%1%!@oHYN7}kwT%oq-H zOsOp=+U>)Pdz82@gCjzP7Rvu?cB>sWtVF!Ve29tI=DvHRlHlWPb|R-FDL z13zlS-a?!reM`GYo&Ec)#5sHe z7cLiwu3BA~%PTQ0GRo+y;++FRGp18VQ`20*5k|1UCkJmI{49q)3xfCt%b`c+ z#ZBHZ>d_0CT_;4Qk8U>69P{5fYJmv>c;ww+QxIoLo#0(#3p1qL^}#}5XJsHY6Q%Fo zr9HrMiFtv{U}#00tG)N^QagNTn)ocb+Q;vN*w=e!uRQ}lO-PS(@uFH-62#hCa!RfB zg=FdU)@l6EW2!IkPR7*mF zp23HAX#n!6kxxWnE@1KSmHUxhY6rKw6yY~~9WgEhk@V5o$8H_XS>UOZfGTg3C(3ZH z%E!tx;Dm&*+J`^80E3a#fKWr<93k=72Gv*Sd?i+mgXECiPWc_h07sI2E zk2+dCMc09x2Uv-}iS2%3)B+11d(Q!e|Tme1)o^_2t2*LmayycJqSBv@jBLzB20QbzMau+BPL7 zZH0F9)lmzCF@{h-%G90_0si&BHn!=2V422EllZii5ViBazDvW<5TSiOyzKx0^`qn) zyVMS1;b>#wlcQOA&_e%a^>i5YtW=&3#k1R{L)EE?AsNEDgXk~suDu0Xr|JyhW*`93q)fRJtCsCDh52J zlJAXeIuLNMF@69}Lhc`g)c1F37@DvK(L;q0Yy+yW+#l>xJA4D=mV*wxfzwu+q(5xk zp7j+v-jskCk{BHK2e>$Fd$O1cjRGqtg5r?G&C}ozJJwgLXe9#z{LYK(1tjJ|9bEV0b|-kX3)ZUG6uyK z{$|wi%izL}7#Ais9Q<3;-;P=!N7*E#btIE5QZ)AO#x@~*%g3kK4oP3wz#4+z@6teo zLK(U^X+eB+t-!MXuuJU-710H7(x^}nPzt?2&R*S^5JC$aYA&=tm`?+t33dvq8h8|; zpcO!+GGUN7f9f?0P@#?t#s=qJ!qbNF=OJc+3qJs@U+yP1`Viq?Mjf=oxro)siNj;Z zGOWLjS|DN|fXpr2jXb0#l)iG`xIm09)L1J3=;;%fOA>X}zTLr!p+m2+&%mY!cL3$4 zSMO3guwNiXX`#-`jSpn!(b~i*Bb<#r?8p)Rv;6D!jR>_iLdFxSzo`ELy>)`?M=cPM zM7hI*sS9wSQTm3ljeXm5fR+h>+h%%c@5Wskb2v=n${VxkbBat-|E67PM;gQg^0~Mp zKBR%*-@LCGIa*ifR!E9%h;VAfv-w0gUKH9PkQ%B;yP*F89YH3vlUsUC2R6?XWH>ky z0E_r(JYn$Z0JzVP!_ob3CcwyWq`q9Bg_88Q45so67p?m2|1W|1^#Vg zn-0h=iT{-A#KnSRj&E?d}@6Kp>cepDb}-^9)npJ+@ikL^?%7Cq_WrB&%sZb(cn; z*p&);pAkq}Ay7}-rFLLt0z%JmId&q~8K|f4yPoG}04`GeJW}tu zyVMQ@6`?mK}j`~`#004F<7S(=j(xK!JH;iv-^Hnz+9id~rq7Mk(BqZSwd=QI5j z6JS4z(9n6&z8yoS8=Mji&HX90PzZFK7w^*0G$UaGahWIg2`DXm$u6}6&IzPcZ14!= zq@HcRbl?A7g#xWN=HL-(;j9R@pa1j*AXh(kM5C6va{5sV8_Nj9wk4ZAkIf30dW@+b z>Kw+)cBvPL|DfzFQV_Cf80O3OJ*Ie@C>M|)qyt)yT%^@H5+!XfZTMCQ=tBfENsc7y z75gq5Pi2c#r`v1Og1`$9i$R~%#N+Rky;dOX)=?sc#+~B08yVrN248`A)&cYd|Au>y zHvLzRx?q^l;Ug%CCiE+oA?G!{UINvi)Btc~lecA>r>`CSB|_#W5`HGZ5y*6w_qxH0 zNK7L29*UtLP59#J>qqSe!$w($(wH>3Q>XD8MlBF`8Ti=_Xe2ZMyd-$zE=@oPE9BUL ze~>;vV^P0pm)gPcN$~h!vtZ4np7rK^ceUJ-mM>q(Tn*+fUy*b4!Gp+n7C#zbeQZ5c zSq_>;MVW2Oh8a4b>BSyhTxxvdE&KkpA%9s>BuxZQEtWn)TBrgGwG|JM2AH$Y{_bkW zu#C6%nqt}_0RdqGQz@96p?cfk^TR;Y9zd!us;U^f`fne+h|qLH1@DpXW?_r!zhl%H zf$ju4qj0gsCOop#J4Y=LMu>^h5YS(8V&Kl-weOC`kSfWR%J-Vvm`A*GK2uTYd%NvY zhJ5`KjUwAVH>*-;peoG?kvy~QzI)$^#%O9QaiCEI*AWvX6aBapD4RClvrF^X#bGo- zpAiHCr<*W*?=H2&qjw3?hBC&LS>RdG~Ex!^)ra1mk-$g`Rs*mr%!NNp`P11x%_2A7}j zxY$8N4h1j{!^t3+W`3~OY6K%Oj^ut4Mlh-D=tF}qB`|h4h!aF6k>q%x^WnjZ06>gx zD(8*BPBF0vJ~Ha!f#9oQN34%N(FZGbKDu)^r39pbX9J*&Q#9sW=VSZ&=J6Ujh4n%d zJ>`Oz#P{ve5(vt^ z{fWN2(QsYSKqF#`y%I;X`}=|3WEu_B^H36@B2xZMx>i1 z&O$UOGOaK4{UlxlNHU-V6Kg|wqhIX*Nu(PI@{_0KOsOL8OZ`8|I0yBMj-(c&4*Sb} zKk1UZ#+8RAW0QoK;aB>95_+1(|4}DtD!i1h_WdNPUwjKxQzbHnpx@W}f07YLawQ~d zNgCTXzuy0o_>%ZgxFpC=)+qi)-%sK;!i5~WJAw{qV5x8R|0H+$Y^tyiDQ*eh>irGLWW(C_)I+`A*+YiW(aP2A_r^*Xw)V?f*%o2>uZ2Cps^J zcHis!$;6zTf|oDV&c0(Nn0BA>;lBeLo2{8X%zQ66;TG5O+W9|4FjZ z@WHv2@Lj{u_)-5)rVMm}Ho2ZDdVfFe`^lL62`O1X{iMM?L;a-hC)qU#o-4u~go;rG z{AvGB!ejs8+DS@xh+7>o%T{1{7ipg4%} zC14)U_pcdW$v&={I7~qT=Rj{n*N(4bu-s{i7;cQ13MbR+##S;c4+u|4nAlj&B4>O3 z_)7NiuIHG?=_zs|$GBl^B@;&#y%jKt5Mh-U+&I3H3HU2Km$=chDOuJ{V=S32;6BQx z1erbcZXR37m@aUV#!Q6NZi3m&En_Pg%T%!XC^m5RKr7CE!uU!K6#FuqODrf;*EVh) zU&-R`hU7eWP)=X5^~CX&j0X|G+b9lD5rb24+t^Ab7ZgSglmjr`!2ONe$5%46DN)Mv z5vW5jG`wScC1ZJMvG@b8HvpZPPa0dvK9YJAh+>r7MpSs`_)1O))e#JcV$o%boF|X1 zWH2ry;nC7X*i$o3o-)3Y74rl|F%&L=He2ppV=I|dG&j@`90vYl9AobuTggx_IC5a= zCYL*`1D-m*l8O3*U4$+yU2S+z8(+zw4yMOp(b(>@Rud_)3OO1uz+PUl<)|-#u$=C6g$}QWsPM z+ZC}4{p|6T90f`ocaYD}WNM7(jICs#4>%P;F+@-mW?cN-{XM8nniDr!bC_w^aG)Ld zy!``Hn+S-yF_PRItBH2|(esBW0*_FfNV!fDvNlcqg8d`1qY(LtS>H!CfjPwB6+-*;u zeL2yKwktJqe@?83aZ6GMRp%G?8bU#e{5;wtA<-|6&+bbG|NapBp#zB06b4dcVqZGy z_Xn708=gWy3-vY-t1sK7ugGvl6a$mC6mM<>&|bd3naad(V0j%gND+cqRi}jqKftG~ ze7XZZ01>|!h4Khwy>fwVzM|I`g-aViP!cmiZbN~7<=|fwg%M^RN*pE@o>1psHAE3W zi(rU`8p|FGki1uqIw)*xWN_EELQkxfo%l68+Tj~^Y4D331t~$Cyh)z|jelcv z2}AxwMB|27!nQqGwS*-=>4}$sB?XReNBT|sA5)H&4kBF)uxoRXiFr}>U!0%M7D??g zP(bj{K6e0u*Tg-v`{rJ=i#1$5-Tb?_o^>h&;b zLt+R~6-*7^HtOucIvYg+vP^+ta8*`sAGJVawJU|=l;i5JlYIu zk5oCfbFvASt0#5qiu^Ag0K^vU=w18&tCs37&>N>#)-K!j`oP|>wdGt0+}+Yv@b3LR z4WL9F5@BZUehBm#f&ZS~j}Srt0Dym42!h}C^?UbsGvo3cI%!^|7QtP7iE!2bwX5f~=&GMst@9dl=41yp;^?+rNZu(f?Ps&2iSu}x0#X;MT?%Sm^ zf%pkrr+ zE{(Cg0!!*V*sBE`wlI)$BszzLr)7L@@G~Vza9H3BbYQ#4>m;8aya=qZamEnG6PJBA z^#A|%-upX}>&o*S^_ku6IcI*^|3JTN5m+RE@CK??Ptl1b+GZ80p5}CChj~$nE|^jR zsA5T@IrJ1MN)#zekrL$%5yHoYLIZ&C1Y}x7ThZFQVa+y5$8ce0I#Knx`LYdI8f_r&d@l%K*;f9v?byDe zDZM(_xjdM+4O9-i7`+50O#trNxN%$3xe@7Inz~hZcX!{GAQn)JUHV68!2?=23TaY-J287YFT@@tpD~)osE5Lk?HadjJM($y z%qlrWpQJ#LATY)P%fc+XeH-;#1KvpE2p-VFKP9vKjwL`F?NLY0H)o^n=&FsPDrAVn zy77UjA-`kWrTV?DQ=wV_K3O4d}5UAY(U#4$ntZ;<0V7T;9Aoj;j4! z?GC7!nfl(j`2%zHz3LzX+-T13t24@Tb81F@#NlR_7l~efE9fsYV zfT;h(7WISNH6oITJV-eOC-IY;0tE$HWBST8VK7Sk$Vi{sc0tE^*7Xgm9IsubJL2Xv zY|-ga^9zeqpJvm0mZ1D3ch=>6kSrmhEqd+XX2`ibz3rUM?GLk%H7=8|t0%xSi1SFS zAK|7rGM?FX_NMftRB$9gvDhql4!Sx5Dw&hdN&y5|$lAKkZnL*<+ud~|K4$)aY96Id z#kRP?lC%Q&c)F{h!&lsc6G23?dmDjE+{!Wkylu~_ zMl@zcYcg~`x9cr)_t`g1fi{Is3U670_6(t1==7uD%tN$h7?lZ9^&p5%7!=jXcqzeb#0Ugo??DKS1ocE@54|u#qfMPZY=Z=Wkpv?F1&Jqg8qpgz zY`m%16)pzIRRSsT?WRwVmb(?R7#ELQlk&;$3RLsLL90S4 z{VbTJ*y&)oNTWAbUlrV|LyBey&nv|19CgvKlUNkjalN222P1~;$i>4ph`tKDGPBkL zqYr_}TQ+P}7?DNd$wz029RYywTeoO7nv{p4a!(<56jJaWzHN*8L2MqDOO*PMnI+_! zzWtC3msiD}rpl#J*0(5nShvz{fr2^DeAj!hgk0j8>V3|bNvo}mQ-1%63x=vMg7 z>PrG?RR^vEOAAZMhr{EgJ2)7y@c?(uB)TKq?ELH}u@)Qf_m7fKfWM4by-BunnSlm@z0gcOnLB1RvP2#Q@sbqUMZyDlBAdiyz#g zNyyN1Q#BBLLYf5X{|{|ZKNR>79CklR!K=oR|KUR}XfFohUQN>e>+_j<7?;a|NJidl z&-DP`3i?nXWzJ+TJj4CSp!FacKZ$QQBKPKITz`>4^sJ8!JADZ_ zQnbYy0~!t|Pjbbu4Z1$+8DYjbj-UtJHy_`y^Id>^fW<=gVmSLDjr-Ig=eE~FsvzG~bp&%WFn>g*1_zaz(f38}u@GEEL>5kl%q&vp>6GOM$y9@OcLTH%ivY+k9?|rXbRN zS%{MYOCGxHne+KA>W832bM`b&b_%boFC44||dg^yMT zB6`jj2Tgg%@QDV3Im}|PH>r7b^(l`rr3^&pz{|r4s=hSr3?(&?BZ0^}c~awe&9Duk z9)=t|B`REQ1H&`FykS!w@4Dt!wrHv$ml)gVTeH=X8qAVwx2PW!L(y6-i-I7OSa9Pq-;kI6#;}vuLTd(UE;j>7kG~y%bJzxXHEtSGImp41y7sp= zY&8HI11?5%fNB+Z<-Bii)hr~)0TUESM$XOH^}e%3{fOL%^UxRecRPji|GOQ&P-{k0 z1F=7cBIx@;t)TkjseFnILG8?gJwO628w!I@}$BQ5~M$`KIr@EfZ&j90=5KYUS$4i!)84)g;Z{_`AY$>VR*mZqS?kw%kYON6QDYf z%g%4Ms2@O`2+(s82|_e%4ga@?>~GEb`F#p#%)Efm^mqOaqjKIKUpCV<@k2=t5J*H7 zUHtO+cY`Lr8wX?wC}oBT1-QEX`|1aVG}=rQ7(j$0t68V$Sl5oizXa26a?eIh+42}CT4QO7WD(4 zJ0(kH;PjBQO|w58az^_eFyGum5$J1jTv)Z)ztXU^0y_R{_bNbF4NQ|C!46}&j(_8z zRRF>f*btodDXWIf?566gfT*jAL`6DD@S8&K=3yr-WpF?|DDmY|Yy;Z8W!MHOSeA-2 z5ah^-m_~5xhOL4y6s(u$$bZp(5VoRBwoXx?7eIsmuJ{DF!J0!0Wxtvd&;1Ike0 zPWV-VIv^ktJnuh|uGE!b7j_+oJgwdk9ykYFPG6#3Z$ z9Z{j?JY*q~B3nmNV6|)b0@svmf2C)j$vo z=%`CIIk5**smHcx7E&?{*A6<;0LfJ9JCAQsKgekE>G*(@0UFGSCpuPxM1$6wB3o@+ zt_BGR(P;100EmOAaYW9B)0;A{CkL$tG^DAig#->FSK!IvQ`J|4Xk}WEzrkJz)qUzd zJ?!L#QykhZoGzEJGex7%4BH^gI8uh@Ne&vd3+vepTMe*yK-hwC3xbdm$9isyW+B4i zVaDw^b70a#iR#Z=)DQ6a23Q3U9H6(*llaSWV5lU*t8__)SgCQNBqXMI^r3_JO~59KS8ZD+7OVHfrvb zdbDGg7Hdb>POfPi9K#jk<@&#V1T{Gf!1Nqj#A3avlBMPXXD*cz1ZaJeKo#X=B1{#Y zHuASQ4&qr_5IMougr zM#>a~URU6E#(6_G=(yZc8~|BRFfw%K58WVQX#s(C=$XNsr2ZR*ZcrJb;!c$;1x(b) zT`+8e3A2n#BcH@}v%qrSIBbImBXV`+9tm5kZ(9DFMh;s+{W3>M`<%EFJIlXq-<==& z@}KMT&H5fC)!c-qLxMX2g5=b<1i^(P$Mhwn>1@8>0bOiNO`Q-eHgdWqT5phG@NFTI zM3w`w0q@NtR(~s5!Ur&7mQrX6dKc9cvJS>YBiq+9%9``D^#!$O7V=$uvIeFGYu3_JkS!zZ3t0_%uoMaU8nb3~EedNEFLjp&Vc#@0r^@2-*$u_@}DF*544*Hl8-6yQsaur}r zmR{p?&PLO7h0lpT4CTfE5o{>0ATxT$$Un8lXwAkoh6e0muH#8fKa9vp^v;n+A9{p* zQAb)b3n5koYi zca8jev262clC_CeR}et;{EZ{$j-N}^_8l+JX=t`_c)#>WK3u{ltIzWcx8N6>@&E|ZsD+VD0c#0QddLlh$dhcJ)CtDKE(v{ssBaj^lU(Y2s z2ZHSb>*?lba>~ zARa%vK#H;qdeG3K5_$wq_tBB_Ueb9SEzB=9sVk5JsouJEt+<%y=gPu9=>2kEqByyB z@$-?m7Uk&$Lk@>m>nfjHoU9UjC_Zh6RU^m<+Xe&~sn$ozKKZGizX1pH^4XaPA5cjP#G92rHYlz~I6F$X6;b+|xgTF|LkR^7R8E6-A=pnm z?-L{cS{}jqr)~{B#PZuu=;&7Q-_c8$78g%`5^xN@Z2333T22P=wG`UmbD|!RCW-yY zk5>gf5q^k97u5-bY-1uM#jp%=H#nPHN_>QzQCHGw;rVtsEIlWgr*dB zWnW(Nw-fTa0D>vu60n46e`Qcei6{huEhPIv*}<9`URymL#GO7vvxMLS9~a8IuU2mY zH%%q(T?KO{pw<*vG{@C9hHVh|Mu=*N zi6K5he>@ zaE8GX#06zlKi;B#DA=8FYT?VoIi*JNCtK;VyB3wvk(nBb%KOxHf4V82rH{NPp-kTk zK->_L_}QjBMVXwF)V)VcN>H};&qogL>s1v0kU$Vh_;eoD{{!tHGNq~z{z9TaE*gC% z^A{siU9&reNfO6aC;<1Il>cRh9eA49Xd|{vvMCu+MU!{UvR{t)1C80_u>_be^bxEq z;3J-s{Yt}fVJXIvBt~QaXu>}w-sm{L*05yb$1>m)B<{rj;Eb_0e?#bd<$kkfeZ)YNNV%N=oHsi|J~ zI+}?&x`{mpkpl&_Z@9l7IeO3wEW3ZOZcj}e-%Q!u^1n97b)sPyutB6YmwWYxkuzS> z)vIj!RF%T7lz;TfXUhufBc-X6R!5d#Nr9jrE+X07ZOi`S$O+x=w0u&ZSf1H5v&M@l z%Se4Q!G#RityOT{AUBeNA=l%UhOQ7_Ds--|?gPR?5_*swkco-#&b=Fkb%-zQrpb}N67w;Et)!%ghMuy+P3JxAftHa7WG3Vgmn?aF_7nG$20F5nO!l1 z7iQ)qpjUCSmR7qk?wXa55`vpmxZ+&A;6b~43en)tn%50PIzd45_>p-vy4Fly$p z-+2a}8MyF!Xqlv##H2DL*z{6Dr|f>&OON}Pu9hi1a$*wYEOnwx%D#8QTJ}MaW@PDL z_9b|dn)hv3%S6VIoa_Mp{TtRY>UrE`C<6!(mt(LWAaUATGGmrX7o48M=JUT0 zCX@rW_pj#a8b{2PB2=9kjfO9BNm4T&gm9pT4-VSKaLyqR6^|17B7}|}TE{lVE*7P{ zn@b@S-qORv?m8yg6C&|TY*WZ^)g!|;Xv3unusI2co}eg{Ji0~O2k0%iSwnYBNg7_p zV_Vb@bO*^UA+6;R1O`s__{e$$e&PV75QqE_;3VSh@e>jlmGfM-oTPbhpJ+Lje78FR zsxLc`Jp!X45G>(-!Wpy>eN<15%&lsx!j9MD@m<@L>zKgO4a(QK7{!+T)X2<6Jn(3B zP*NDHlz&j2MmC)cJQqIr5a)ya|ZZQJzpX424wmE8%_z@g^L51#25&9-HQ z;cVONn%*-PEpk2T8coV?DgNS)XTWo6x#_bV4@6O{aOf&Lux-=tft)b-*3{ai0 z=SKd$J)RUhFW^X4d0b)9?_nqv5D^r%1dgB7bpAYYC=VlBOB$Cb)MCyLy^v6^UY`*$ zE5QiA;+W$P-Ej=P$g@1$CDB&Gc_B9ADQeWR^e-c?C^HYuW<+|WNZ}U$X?cObYNx+ z6#z~!QKEyW%Z%eQ2b+)$fT)z~o1>^Q3ca&Njs9<#V_6y&^~I=iP#^D7wwXC+k5*UB zGi*<^{0tg_);BfJ8SQhtcbwTRS!Ko-T42JKCH!3Ej| zO9=r#FjSs_@8Fy_x@-Myt5ZQ%;V(C+Pz%vOWvL+ig-qK${#tq7fuK#|f*=dE-!R z&d*EijGG{SGRY??b98*o>4l}RH8C~B?_@C|)8GvP( zq$u7fy4&8HM>TTU8H9&Wz(oqa8%PMOi$-^r-=YyMNP=eV^%BoSdzB@*Dmp-fhFca; zU9LsU@aW=owMC4Swy1Q2X$B@Khh5AxlDCY$qDsGzKR>nXRRpLcu|;*=a4D&c-#RK8 zH`yPw-Y{>;b7XvxWP=c$Y3t{FrEeQOqHJh(dV$2mp4n zY%}WZ?GEX-v$UAWcoSHFw+wHb@(-crdB^C{+8t_&I0N_zp%NpdD1!m-8AZ#WJ|GRH zD&U>%ZHc(~fNis!27Eej<0D5PhB=@I*t*AA0Q+Jly7;0w&oS|gX`^>l>6 z(bgu>ZsL~36b`+sJs&jN5xBv;q*o!vvmgY3k6MbCGyBrf1B_a0JorqiDU^iW7xHT?pvR;4 zfo>t+D_2<#z49VE;8#z;=Fo#XsV?h)pmjbTQ6BQe@M=M$AIGux?oECC>bFM)fT$n= zU6cLBG~ROC zPrOvk$#KH-;6qPDZp`FrX1s4yk{_~ZXtmRFBjAjO+?X6wn7I(!c<*noQ2l0>9R~w$ z2&9A(vg*v-KZ|2s2QoLeK%Asl_0%Mx>FCj5ikeK4e6ZSpExR8!z$M8x z6L&^1-1*R``1jfaR+gHCZiF%!6o6809|s?9FLJFH>~JwinGy5@>|lCebS>{AqlZ=L zPU%#j2SdS?iPm-og4l^Z+TIei`qKp1gaFmv?ja9h8RF^;#0W{KH2YY^z7-oQvz%=o z#57+JfxhsHY6D)lBTyG{F@YA}CYhS5@Z)U{N9zR_79+}oS57E&5-eB2oRGka2T=YK zqyKjfE{j3_&ykfpFg=%ka`f->|298A`>FPdn1=yRR5iI7rE*TLbttsf7aSq7)Gm4pi6s7Qq$6n@sWz_G??Zit&6a>!OoCeR!^?QHuHzo@)e9AZ>9|X_rn4Wj7zNMLx zIsw;-gXXife^uYoGBOnddNwj}wub$+3YP2x0*B0)i-{e6y@I81MEQXU-V=z5^9_AV zbiqxkk43CYsD-~-!4hmKLWE-Z-_o~4F)Br4n)ntGmmv6d1xxA%5)Y^*X!s;C zzoTzSm0Kv+iR-8;}u3)VYEA+^*2L28DmheYH#Eqv(y$K$`pY$zN=A+>w(vfh3xXz9GmYGT7 zK1l&jlaR8En<`i;$06S-N52X68G=4sJnpVw2?78GHgf3-xlHe#3YG|0l8r=y zinL^u-K%fO_JiCOF)q+9ps4TDw}knM`eX`T0FH94xL@1Swm`RfUa=_Z?nRO6SkV$5o&eFGpBZ<- z3D%yiZy7>mE)=Iy+C|#n9DPdym{h^yfgyv!_5R!nmegm6h!M+-GSKAp6)Y9eNG`kL z7P~=sp1vi?bYKLj_z2)^lJoT~Nyt&-1#HA(A9Auc=v$(PLNrqu>Dp(Sk2F*`pfD3Pzcd@=DQCj3_U>oM@OW^!16)dSHBI~Oh0(XRr z-&(;E8VqsZxJM#m61+{{k~#@uzi70jW(@k`?G-FRk_kD#MG&7@_d6^KHr7Fw8nsDfo6NqdE74HJFff4G7r7j%z9EDb2CO@fc; zTbht4z}Z0|l>>;&{AdMBQb7SXW}kz_bkmRNTT&Q`x{EJt6tH^vS5&a1bP!=MfW%Y| z!vUmk37I{79MsZ6Y|nA_34KcmZZnZs*_P6xBQRm3b#dN-;Z^;@7x$b~Za3b3_ zuF<#j2;n0$Pw1B1fr`Fd!IFav)}M?}m^d0=(YM5pM$eW=z73f~>R+pGi7QQ-gUe2c zBy8k=Ro@a`!iWNQz9=R3rt>v@OA2KWMFBo;c$5gnU)Q%JPK{8R%m%93qB;#k-U!B~$&0&=Mz zRIn7U)&usI@~29ESizF;EAd<6>QFRi){pcpC74Rx81W$p9>VCy`j*5`NxH`9Et4Cx z!=F^Jgz*v`7I2kpD_Q(geM=FQjiG0QT?DL$_cMLV0PljWRxxdfkUKxuw*+O!>4(NT ztm_C`{X*X|qV^*OnFn2TMtbI#`j%*9L&*=<2EGD9HNVof6qRBreo0K~&LB(swZ0|i zCu=*!nid@YH~N;)%yEXHmI;2tjI7`4TM|uTu^8;S6x{g!?F7FQ&ECIJZq>HL?}F3< zq$J$bk^sF;-;yau$QR%Ulyhhs-d@3yj{(GravJEc68{c;OQwKFiUi6D>VZ<@&I*<} z-4H1fk*6KlipXsGR#PM2`GZJe`4HU!4jT-0?k3laR^4{0ewpta^YxXe-Av6)d@(lbhp_1jNGlVSP)kWZYC>MIeM5W!@wDmQdSxgmL@!$-_j0<(EzPMdsP&p&aGgHkKhu`C(n!b=f7Uxk~(WC3PqlV%tdCNSHTh~`Op)g z57O_Zb-uo(N0l4$rU*SJY`N(h^eu6SV{o@fb^wA*lM5qU;o&)%tTNmd1FC<3Ac zjY&UTqHhU~pQ>@z3hO%d>~~eL1cOEiBK5)w1h{>vz9q>n>N7IAqO-BYmsPOD(2tly zAWq0)zPo}Yq9N3(QF_T{ZMg5zw+yMnPKnZxAwjkyx?JB9xRTWW`5Ed>#2VjQ!7}7Z z2LPOHH)B$~Pu~*YH^m1TiCVJoDt^DdCA2kYT_SXkQ;n?o2lOpDHR&e7$v_$Y9MQ-0EkSs)#F#`88*da}QNa?dFJ30(ZCtZd@^O7jsyT2?1kq2S zn3sG)-x5h22l%YeQ+aGhpR8b+fcu8^$#<27oc*WtEycYMj3>_{eC&U^f@K5_o3uqh zObQwQ^Tax96_KRpC(FE#4zgWc* zJ~R)a8Ny1w9bT<(36`4jYLguy%Yc}EN#Bx0A|!@<(tyxOs!JiBDn)ZRUl^$qi0-xB(A(&!*Km_~8re`jofWH40~2y+012C5D(nepAR z%96nj+ZNGDRDfVL2F3fm>P-lTpa8-Iqot5={eJZ(s6!^IicYXW&V?+`55|U69j5x0 z`?&lc2)oeme>iM|6qtzs85>y~1evLRG;D*BU^xk#gY1B;z)?RQ8_ctZB&kd*iYOvt zbN){Tn~)ag8bJjEQGLh|lAjJX;V5K30lOO+IG4nM3m|8QR4t5tHTJUYxlHM+y4ZzYh0Ko7ZXS?7 zp#{vT{z!-8M^W<}0r~_Y@$0cE9qWQe5_lD!hG^i$;GJFnH+sg5HT@Qd7NwvOqF*Gq z9rL$iyE^!w2E4euTFyDbIPgkpP6SYex<~*iEjXP*^gb{2y zoffe^NW-Sn-JO(7aCpSibEt1`v2FBC3vd{bF)CuvT)KNK9pXvz>C%j9X)krIcVtJSgw`S!lw_8)qA&_PVZ3*u#p{}|B3wWtmYH4 z479EdEZQa@PoVoDT!79|YWIBg6HYATZS|!c*pi?hklH!O7%fmhuJ`bm&eNu*@PUM1 z*{1vwm2xWP!Krh#dSq-`$G$ZlmAXp2%LVw)@C$U-w;mnaTjg1ugNWCW3nU-bP|4mS zUcD5FP#{{_uo9xjTPR5aOd>&*Qtd)MCUGAdJ6%MD+B?mv?@(=#tTHbqO4o{EKc&oB zieq7s1egE#*kWfNTCY*<(JiY(g{2s&aLO9G9vcGYfYXf`GGB}2V`sMn+enh%Qu0PYL zMZwz$Y1|Uzzd~%-up<&hwn6Cz%!d>kJoz^|4lZe4Zt_%%!QtS>=2L&G;{dTJAYB0! zQ_iUTr~gLB0TEDg7d~3+#B8Xdf97v=97F{{va{UkB=c@QJNC~5H>pFTnP@Iye>rR( zQteY0OU3heX=X2C3@Vy|>NFFceQ>cp%sCFZC1Q?_``ku04qY-p0Xer57f0Ry^VlgH z(DUZ>o`!UtvIOzRwb0mnK(UR3zkv42}{-wTCv4#Z?HU!;yZ zg7ye6U@zm!F;rzjXF$vuL>t@~&Y86<*76vdY8GbJmNd=4_kO{;7Dt~f!Jy)8S=Uik z-zy@rWYx*xvPz=NcX9X6dU3QQgxzPf6bKCl442e_zR?NJu3h~fc5WTtL^dH8f2!cX zt{Aty`-OTu-_K;G!5|7Emc%ry4QcA1^WxYQx0TjiVU4jhb&WHHZsLG?a`r-E7-92A(`KrWwOyLqjdGZ*cj-jkDwSDZToCs}Kj z@0^`o&n0^0{30E*N7Y-?yaCrRC1)x46^e!s1bIX4+O@Xj$}hQThyLLQ@%5@Nwh9|^ z9#LRLLZmG6I!K-4T;@6)OLKXYDNjinP~ZV&PGeY*(aVi5cyRz*^HpyEVe$)8sW3s- z#tM_{jV}&hwE>J^KC|K2q6)=^FeG@>ivw6~08{W!l(qvjLu(9@jtgs7y)gDb670`Q zSd~q1)xJkc7CwEj@OGdQLW^&HanPo^r`@VSizubUp@5d$X;G#7>Adrdz5&z=nqv z(V^}c)sVM59}lHwfgHahHVu#5etg7UPp)i`86x0b|gq+~r8qW{`#~#~9-)A5S2eTg>-3GFo)Kb4^ z6Q02!IWP$Fg@`on*%%oQqRs{FIT@`5(bl{EreXAr!<_77x#k$3{8IU5n? zmB~d4VQOkuq2j!w6l!b>HfGeheoH5A zYU=n>fA09!FCEtUokAZDuHek1E*u~s9DsrO!P-f^lKRCv)mt4a{zMg(ThRfuuaX?s zSC8fn);W(54{cBciG-if1wmLv0PsV#O+`Y+V1k8a2#F1(-(CO1wFBE1L>x7T_3e_s z3AS%XF7npv7%lVNd_{D$=hE%lcjS1Fb`v{9i=Fkzf|`|>ut=@tnwo%#6$~>5l-+1Xp1|Wa$%{;|v{f<^m!@J)C;-*!*NoG|#&hVUHzLt|ig8Zm*pq#7EeEGDBW0 z9wb==-$$qjS`dm$KUIs?-S)C40=n$LTp{nyw}n!JGT8)pj~SBnb3Q#p|2v+M>vp65 zXHW*|il_*h)Y+9A*ftum2E2TP{ZU{A0eMwTV1er!_vLuNAw%{JuiU_W1nImOs(? zi?R#lilOxb4e+T<6)N3<{O~D(xCL9sR)#q#Tg8!;CddJNl zkCyT7Wn}rXvzC`G9IoOeDI6&37|=ZpSo;o4EeWx_;0w5dRiC(HMr3mj?wl*Z^J_j3 zp+lEKeCRK6a9FTktPLouLZuMWR%F)z_)_p;UR|qPR)x}pjZ8W~1_+X2==)OjCZIF& zk>#L%8#p~V`Dth#Y{Z1Bw_ z_K#ZMxxKS5dqssOCaVeDH044th`>4k*ZZ}#SFN+nBB9^b9&Vst0Yhd0DFE795c+?$ zcG5aq<``oA%r~PPD*#P#N^_`V7*vLa&et@z^VOq(cSFUzlRzu>tKP zN}Eli>D+*GD9WHBBQge~zhQlA{e#m(dm23sv<)~&-3SDT6@R<-uj}l5AL(v(Ea)q# z*XJ5Q%p&{F`bVdi7<+`y6);#Nj)0@uk@ekmFC=0#$N{$@ybV+!Q89)>#HR0fnBQCX z$jCx!U79*plt?cIJ~jrra z;PX}la|Hn+JNv=#O-9sKhp?FuK5<+~{eM_HQL~pPLt-$u*xA>1$O$GuC|?xIRRRgma0a%}Dgj zep|f>fO#M#xj!M%nZecmyJ5$HdsAdko)SQcPOc#M{jd$9)$I5byV4#xS7rQR*ap#g z4TSWG@&Y)XBlnLlCLX&pKx<GY&7)UrPNI(O@FT}f8LL}lsW*rT3D*(Dig>fAC|+MXW%)VsG&TY5H$?1q^8NUov?EV)9ud~Py-A3P6_=}WgK>v~4RNIWwWxlvc;gRg? zkj(hu&9yBmDzudg5t>T~lLE(4@g23-wfo(2751?w zu=2GE)?^Q1Y>Mk?y|mm_{CI-2)Af8LOcCJ9n5^t5Ox8OG9sfAH6k><)gSv(XKh0g$ z&u*7e7`P3n1dXUljP1LJJsG)OQluRd^9&=l#PptF8^jM%iO^IqbyL%_@7=nk1C1eh z7832GSj_vjs2>?>CVX}L=M2g%!?}NB_G2MFL6p?Jn>^pb z^!%LW8g2h}8Qna&uv}>x2ib~i1a|-wiWyr#<{_f_SnZSzcuuQ8E5!?fZc1_Y zp_1B89n{O75YX484|87HM!YFiyCz6{LI^<8)PVV!#Ji)T&q#{kjl-gJD z{XjknTRsfIWV@JD?$foChHY4|9}P6tVbDrp(S!_)&HtI&{}{4e!I9KwqJ>4N`bX0a zwIq?Nmt84zp6xq*bjPE-7nCjykC5_2_{rf=X44}L_*|_ydJaZdXiR5|Wh{#P8BszIB&b0c1bNOJx7xPymo%mxg7jxeDpdrqY)D{D zqVQCAC%^&Yv&IL~+`*|U5}2sxz=)4$arXG}+fPln4evLnre=kUrhxy;dHPDQ|B{nk zSUUrVO1Lm)k=}`roe$3$+zC!`u4lqdM4ToGvvbFdzR9v}WQZACJRe*!M82Wyw%9>m zKYmnSlj41hsi}W2UtsxFq$z?pA(;^_Lu8KN;X7|&Qw&Y-rW}+YAsK|*D*}b-JLiud zH=tK*jI#8NP^J+f^nx^MY!KXh!}t;XzD`aYbWC2WAs?&UEK0U9nCKu0MiSUWF3_-@ z3&#IjzjoSR8Mgs?je0iS6dITYs2Gd8k%@E``P$HYkWv0_;ZMrWcO?L%)W)-$#xBUI)Nt=24jrt2vqn zY4YarS7@|Qz7BiP++ypc5H4T^8Kejx-bK9cqVYrfwbb=e#G0t4nHOgR?c*Sf9YRUm zbU9-26B8xQ&oPsgW<8;G7;!J~^xr;y z&P$g2(zQFS7~76s&FAAIQM`jka&(mT>;}1geR+FZ(Lf#=0Invdjm#E6n`DBBMrWcZ zV2{bw*n(%Og${ApOmGid5LU#&tDvMAjM&A+Yrdg}T(aRNvBLfe>^A zBtbCFH!jn+gpeCm3L+68Mg7=+x3(qx%a9_2TqAOe*q8kteM`B2m~6YGjV)LZF0Wvz z0^qvnuTh>t1pK}FmM(cul0hlCDA?xW_vu@Dgb#qBc!;ec)8xKi-x47Ls(s;>gzpeE z=?C;Jft*9p=#lz$LM!w?sBI~F)*Pwi%{g1~S3aa~37r+WR>I+EtAnxru)ZZESV&k| zgzu?9@QjaWTN171Yry4=iv$N^_ECLHE`3N8QV@V76np5$^er9a4^m0|M<`Us-WB?m z9_diFHnL+D6VUv)zNH_=v7aWfNive_{U`J-1Jpp_+hvtm=ndMR)VE|@C|)ovK8$ca zf2x8dp<*G=H8U8n9q-fnmKmE~WJ8CEG+7+0E43}TP=NGc&vpnEM|O0Tz9l-l+?C)+ zqzN=QKBI35(YQ)PZ^pC}cE8W+TW0usfa=*0sCr1#&uLq-MTZ_7dB~6^NFHUM*R}-y z1+qd4*DVBrEb9yUmPGbYULcsBa6G8&i~5$3#{j@UgD=Jjw8E?PEyXdX!~u15^imD~ zOZt|`+i(aXbR&{JiF=KB58384k*0C)MCz9nk89@hhiJ_Do?&9CcQ z!WHi$QB6@YYF&2p4Q)&61dv2wh`@6(apQ05TLO57Ce#O9MiE99e@owz(+{T{FB^9O zIOeytEhEYD5EUUO6N0=ozN2qx0Z}JK2wNwrz3o-@x zI>}c%`o6v;gus!R;rbJ5rn2$}`j()_;*gxV0sXR@ML*QHj0w@YU{zuVnG!qvQ3XqU zFtV7uBc&dO|6_eiHd<)NMH7P?q{@DxZ5f-;w3vqBKyO5ySMpPROKNkG>gDc(P&xJI zKhw5^@SQX*T8yZshE%BiT;GyvH1twaktR;?Ykr|`$%cSxGhC{u68kFsrM@MrE2J_C zLVV%JPk*IviFQ0N#E@(%;wqN=>k5|W1vuiL_>xJAf1_=Q15P9ZSAp(|5Z`b0EgfX- z7+#|5Xb5HI@ANGt>zxlP&}|fHf3I(e0|qMFCkqa3dm8>h-;zWKaveC;)M=-w_eXup zgmSkW>;@4x+GN-1TjCD^l0)PbM}s=?>$NR8uA$;KSSk3LiOO!!w=|(&gb0|*20(Ce z{3m@&2~I?@4LBO2oY=Urf@J{HF|u}G?x^01Z_>Bqsu3fUgQjANY*u=+wxuW`SSppH z7j5Xvr;yor^m!6(hHe?_3TDtraEf5e5RcN+KIt z1km#_>6_cDhrjO_f3@D@lfL1w)t&B&fe{nn(9PJcxwTL=hZ1l=9 zFy9p+%D~j2AIUU=rpb4*yT4gSbTX^%HwyYYd&1Ta{>>n zC9t7XdEsM&AFdQ4dR)(Ot0VFi;p5}4?Dg>D)Z&5p=H3C%Pk0C1A}~2rrc!nI#JJfv z;kIqbwj`(Kgd7uo0s;Wl04PqL9N$;$V=Km9cOP3})b4cGMn+7ExF1I_E=~Z>?y2$F zje2D9k-DBo2G*zO+mMw&rYw27wNEbkXNR;Z1l%l|tR6(IdgadeVbUw=!4xu}X4ml^G#K%KGfmXOXPv`iofKp0iZ!I`a=N`zdFu_`cA#jvjc zXcf@+0*A#NMVKau20)q(fd8zC16^~o{N@$bW}mszwLq!t0q+#i0V)Qe_dI*z#J=-z z<-G2fA(hGP1S&+M77rLDvcx%OVl&p@xf8EhJ|X(N?eZzr$HQ#_Emp0mE-#mR02IwJ z$pABE$o$t&oLD@(1cs_KU*IjEg*-POF5wzl#*R+&6Ra>L5VZk@CyoQ(B5{OJuAiMZ zaYC;~^IaoH*9>mb_lV>pspW&NTn`g)P^rUoZAg-l=P(g6<2^{7Y!A#@@fmL&+^ zJYj4f8C@RMUu75JI*|qoIJ|Pz|X&nrL}GM@&NZ*TKH=Q*=#b? zgfjf}(uvl6r|Y5l^9I~^sCFRfLNJ&zR%Hj~WrLq@vy;KICFxLNvdVq;V3PnsX8@ca z!K4m4PTn)vgj)t^9>Z`!J4cX0Uq09*;-W78nMhQjs_neDbttx>r{za124)VLoVi4; zIo4K82-uBXAPeAvJ?niMy@0w9`XqWFUnsKQKiGtkfzJ}apB<1v$kGo?9M^UJlpQ~E zX>QMSJUxRV?3&%S5wVW|AxL`OM0W9m6R+&M`)=zw&&#52Q8t@TP3^AK46d^rI6;_x>=;Z@BzjT0T2tSorFs zZ{?=tBWDZ(OZgw0Xhlg_xXV$J9v)U%p3!az%2EQnpxij|IStG!Ivt={0a=$LUw+1} zPDu!eGRY%eO@r#ya`uwY@ers@-8A5mYJYs<t3Nrqw0CFvj%wbQa$JZ& z;;TR`jk~}(?|gdV9|!dU_bso6m=^$WUI_yK#S%zf82gJ4?fV(|Jkh)-3z!5~PMo~_ zY6ItRIq|48;tQ6QE%ovuYY2}J+ERQ%@+QVr6Bi8}v?HfysIXXLBK01;wtF-1OWG)2 z;Ti#D@F_!y{m)DsvpgG?-?kOP>gb8A*j39+6pLZNvYDh5O-0FP+ZzB~8rWPhYQ<<# z!UU}>$PiL#aU40HYj;d%D_PYsVA+ucOio3}VnP4&`H53|&JX53M-D4^M(GPVC>vhjtv(T@PkI zpg4&q64vLtc~|$_xO?rBJ$yl7jR$%M!50n+F#9iU?29b-Vxj9r0+4Aywt%6KBPBC? z%|sW_yIfoAoH4JW;Hm#8qCC#KI-X4qnM7Xl<%xqE`T6AG%WvNG;*^b+GdoK7gHG*9gwqAs2`{uDl}hY(c^6-B)EtTu;^nD zTS55siRuiEi4W{1BD2QD(M_yxRBuAII#56G1mofJGT*G;M1nMUXuvlE3<7>7>s#w+ z0$O#Xg=0#n0ujLb_Qa4pk(|ur8o<>OaD)sk{?5=1B8XzcL<1!~pbgji?ywC))#ka} zI8!838MNqoLpMlb1;`;6KM*kFM7}?9YV}%ryb*3y^}?{E6QLM#UzCu_Kdku6>gsxr zYGuk!666arh{w_&Jb#Y{*db_du!qPPpl0yH=kL)V)Opzu{03h!2+bc2zTz4ZuZ0se zA{GkKuk+)+39{c*o4}7N1>r= zAdQi6O8rX1Bx2D3%A&-S@;t}$f`yT zwBCsZbl<7tSzSjm{2*+)F$H~+2Zau9;?U*(y-JCy@G;Y~(`zF+vXIjaj2_pj2q`A- zx`}@+yozdF?08&PFA;c-W7h_2No<3vu@@?vPh&ZO_j-H-d8y^xGE`auwNFU^M*);g7zt^;N62-Au$Q&f$5T|23x%%R?CjZNn}I#w47w zlXw9>Y3HxznbqRA+VU>Hq)eBw*u1qDDm-P^XPACjbn_6^n`6CzzFyj^3z zHbG94y8@|e1JR1_&@h2?oy|RrzyL;(W8S&JA>X?;CFFbe#0HZi+%s{+fJiqRsl+v! zOF54PNl}?Mh`m!Eq|(%M4fwQN^Iq*(bf3GUG|I&=;zLrPAPAd4-8XSwOF=cKlv$Wx zY9`#UnBhp_H1`VSPyr$7ob3Y^23#gW0n}-c-{Mv+2mClQgT2ut25kq%{ae`?*m+I< zKlx1fB<$FKVB*NtTSQ4gSbWbu%mSdcT^DD_Lg>n;y63^p=*)6_?v*9Dc-cMZ(_S~O z;Gy+)j3^b^Q45cNy@ze^;myNRJhI+Cl8q!P2|X9wrDO)pN85w9BDkqNc-{Ds$0jz2 zK8`vloPG;A4|qc;$a{RE(e{cKo6)qucXeF})_=>SC2`dmXJoe)-bvgz7Az&mPfRqb z-%N`s+ofKzifU4r9&!J<$q-Ks)8NU$yFBt1qB56KBoG0~Hl7-6Lio~wSArWBsf{?u zo}M^-*)3f$63dIDhwqGZBK)s$Oa?)e4b5i;Kbae+kYaOzB;14W;6QjGp6{`rGvoEOgS=lM>KPs5ZrJS|9RryH)28^zqCjIqWiMLRnS8O3W5WH zXNT%9?a2R%Wwzdw#9!OZZAc>Fw8_i!EKWVAu#zJw%X2nGPOpP27O~-UyH1mEIo53lDKF9F;Z&=Bf#lo%tJooPbwu^$%gyS;V%NMB=dPd@e2@X*%MSDPdg@Klc%^No15nxX|NH+qqhJ0%Cg2{A) z-l7l)QfaQ6g#0(e%2Xi=Mvdy2H*U^jD9X{OskDYdO)J1K*yI>E3Xg9Rcu>u`XhyDCCC^?Se2~By zI1IVdNllp{89Ec`zt9t!O6$V^*sm+qvm^--j-_la9UJU&|5ZNxF<-!>a3N_Oa3#cz3WwB)|fXSArPi^*4sI2Szde(=`GtN+8!t&a0S|6o}$ zZhQBOz-#VpFw+RnaEFIAN%)V5YrpNqu`3Sz);Ye$*ij{!L0CnG)k;mmM{l3JX00=6 zK}F4kylb$rVKyE$W258!FkGsKzHTnje> zqY1HfD$OVyinG*x@5Y^4?_2x9$c2P9QT-H*DC~mopL}^4EGgkF#j#%0;};;8*S?lq z;KEW_59o|oCrp1XKfXceLtP2Y2>mks_=A(1RDAKF z_Lm)Yj(oV?lFl2iHAg+J>q9nh0vJL z&m`u@HZZ_{#pHQykV~%%a9)#B?+6Y}O&u;}I=k|4QI2tuAXG(Rl9IKG+b2Oa^!&gX zKxt!rd~mXZf*mr`lrxJ$4Ktx$5fsrSiA4TWK9a8jsG3^bIef6mfR zO_rn}m1#4$`an+t#*T74fCJ{IH+FJe*=|l})~}jde%Cs`YH~23(RES_3^{C_AWfk# z`pgE-$InjYTyz~7xg*Nl++Z1Jszz;>qCz(asWZ0B&uw78K0kP#WkG~)AZjco?4@Wi zeqjS2|Ha8QMZr~bPXWi7nmShgF6(mV+#CS3o#i<#FukfF8+y0<@a1+(I*X*UrEd4(D}(0&g-S~HHOQjju{Eu0 z2b&;L&$LmLD`(`3lkBUL&9zbixm0}{K`1iy%eQ9<;4i1K<)>A$Q04B65CFFV32dc~ zVFl6Go{xvxz89#7`*!qP^RB1{x?6u3%AYJ6h@SL!z>TU9l^j?>kz(+2HP!3PAq{U7X2lN-IH%m9#yfWRu-!P-#Qedz9SqvPc!NdmWYI4sE0<1Y@GCh!gzm_-!tUw(vb{IYD-cT&qO20%H}uZL|ggU_3pLanGJk|p+U zHt=Zq?PQ|`(8Qg~+Jb;9RET^2#*uTxgtnuME{N-G1l3-8B(o2GrkOfFFtEf85aS?o z3c%0};_!Eq#}p0iTg01?X-Yk9ecue5zeMpn-18hpPIq>rx7Wg@Lh@mtw?btIYlmQp z_4~>GJTARSVV28?=_tn!VwjPgLgx!Lg7W^b!TaDJH+mnuu6--haa}uaWjRSoH+#eN z?dEj+*Hz7Rb1vM_4(3$oUEvk)EBIVWCJi@(s3=NdlS(LPgr2?KaD{&MY8Y+d6%-ve zc7E{L;aO*Hn(U_C%jfab)arw;gI=RoPf>D4s*K1R&;uf$&drme=GbF_oebADZ87P{l81qV zy$U|CNTE~c-8Lz*nrl2(%}KDa4r+NZ!UdxV_I4PCEC_-;n^M#8_DNxwTce3RiaRL) zKoRG}o+BI;C{kLv-aa>b4~yb zSrlqBi0I(LLS*T#$(+=zZ?~5(96jLWNaRAJ<(e=Q5ViHfyNik1qp|h|xn_Ha08r~0 zQDYhrIP%haCTIH4#wQKF0`=nZ$9AOa*L4R(4Up1(170}Nw2)lfyMf2meUs~~jiJuZ zCn9JBh<>94?B73`v|O&d{HQ1sl3^^bGeuDnb$2;UQ>lU8Rfo58Rb3I43o-R-39`t* zo&5(kMi0a3268re?miOSMJS8Bj2df*pIVJ&O+k9y9wXG5Bbqme8o^v;Rms*5r zV0lKaj2`s9Qs?y`o!4mtbUQ?JFt@P~EZ=;1?O;%Z|65*BPmW-UTs%Tx@jo5u;BO1*pBc&7s{-FTf<|un~^1syUOX>9f#cBI7ad~FsbHkwHucb?hT!q>$^Ua!%_jQ}J~8=! z@t4{8{p!j5KQZ`E75_H7@9D|Euj7I7Ec+ShO0>|BzdxIIYj!^6@6XBKXBHaJsM-JN zr2hi@f4Y=_(fqr=2W7oyDcYl6@}Ey!T3Gx~|FskbQ0aJl@Fo98lmC|dKjwrRP8j2J dQp7!T@TDUTdm$qoPj literal 0 HcmV?d00001 diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 8b17b875..9c7e01f0 100755 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = 'datahighway-parachain-runtime' -version = '3.5.0' +version = '3.6.0' authors = ['MXC Foundation GmbH ', 'Luke Schoen ', 'Ilya Beregovskiy '] license = 'GPL-3' homepage = 'http://www.datahighway.com/' @@ -25,7 +25,38 @@ smallvec = '1.8.0' static_assertions = '1.1.0' # Local -module-primitives = { default-features = false, path = '../pallets/primitives' } +module-primitives = { default-features = false, package = 'module-primitives', path = '../pallets/primitives' } +roaming-operators = { default_features = false, package = 'roaming-operators', path = '../pallets/roaming/roaming-operators' } +roaming-networks = { default_features = false, package = 'roaming-networks', path = '../pallets/roaming/roaming-networks' } +roaming-organizations = { default_features = false, package = 'roaming-organizations', path = '../pallets/roaming/roaming-organizations' } +roaming-network-servers = { default_features = false, package = 'roaming-network-servers', path = '../pallets/roaming/roaming-network-servers' } +roaming-devices = { default_features = false, package = 'roaming-devices', path = '../pallets/roaming/roaming-devices' } +roaming-routing-profiles = { default_features = false, package = 'roaming-routing-profiles', path = '../pallets/roaming/roaming-routing-profiles' } +roaming-service-profiles = { default_features = false, package = 'roaming-service-profiles', path = '../pallets/roaming/roaming-service-profiles' } +roaming-accounting-policies = { default_features = false, package = 'roaming-accounting-policies', path = '../pallets/roaming/roaming-accounting-policies' } +roaming-agreement-policies = { default_features = false, package = 'roaming-agreement-policies', path = '../pallets/roaming/roaming-agreement-policies' } +roaming-network-profiles = { default_features = false, package = 'roaming-network-profiles', path = '../pallets/roaming/roaming-network-profiles' } +roaming-device-profiles = { default_features = false, package = 'roaming-device-profiles', path = '../pallets/roaming/roaming-device-profiles' } +roaming-sessions = { default_features = false, package = 'roaming-sessions', path = '../pallets/roaming/roaming-sessions' } +roaming-billing-policies = { default_features = false, package = 'roaming-billing-policies', path = '../pallets/roaming/roaming-billing-policies' } +roaming-charging-policies = { default_features = false, package = 'roaming-charging-policies', path = '../pallets/roaming/roaming-charging-policies' } +roaming-packet-bundles = { default_features = false, package = 'roaming-packet-bundles', path = '../pallets/roaming/roaming-packet-bundles' } +membership-supernodes = { default_features = false, package = 'membership-supernodes', path = '../pallets/membership/supernodes' } +mining-setting-token = { default-features = false, package = 'mining-setting-token', path = '../pallets/mining/setting/token' } +mining-setting-hardware = { default-features = false, package = 'mining-setting-hardware', path = '../pallets/mining/setting/hardware' } +mining-rates-token = { default-features = false, package = 'mining-rates-token', path = '../pallets/mining/rates/token' } +mining-rates-hardware = { default-features = false, package = 'mining-rates-hardware', path = '../pallets/mining/rates/hardware' } +mining-sampling-token = { default-features = false, package = 'mining-sampling-token', path = '../pallets/mining/sampling/token' } +mining-sampling-hardware = { default-features = false, package = 'mining-sampling-hardware', path = '../pallets/mining/sampling/hardware' } +mining-eligibility-token = { default-features = false, package = 'mining-eligibility-token', path = '../pallets/mining/eligibility/token' } +mining-eligibility-hardware = { default-features = false, package = 'mining-eligibility-hardware', path = '../pallets/mining/eligibility/hardware' } +mining-eligibility-proxy = { default_features = false, package = 'mining-eligibility-proxy', path = '../pallets/mining/eligibility/proxy' } +mining-claims-token = { default-features = false, package = 'mining-claims-token', path = '../pallets/mining/claims/token' } +mining-claims-hardware = { default-features = false, package = 'mining-claims-hardware', path = '../pallets/mining/claims/hardware' } +mining-execution-token = { default-features = false, package = 'mining-execution-token', path = '../pallets/mining/execution/token' } +mining-lodgements-hardware = { default_features = false, package = 'mining-lodgements-hardware', path = '../pallets/mining/lodgements/hardware' } +exchange-rate = { default-features = false, package = 'exchange-rate', path = '../pallets/exchange-rate' } +treasury-dao = { default-features = false, path = '../pallets/treasury/dao' } # Substrate frame-benchmarking = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.18', default-features = false, optional = true } @@ -205,6 +236,37 @@ runtime-benchmarks = [ 'sp-runtime/runtime-benchmarks', 'xcm-builder/runtime-benchmarks', 'cumulus-pallet-session-benchmarking/runtime-benchmarks', + 'membership-supernodes/runtime-benchmarks', + 'roaming-operators/runtime-benchmarks', + 'roaming-networks/runtime-benchmarks', + 'roaming-organizations/runtime-benchmarks', + 'roaming-network-servers/runtime-benchmarks', + 'roaming-devices/runtime-benchmarks', + 'roaming-routing-profiles/runtime-benchmarks', + 'roaming-service-profiles/runtime-benchmarks', + 'roaming-accounting-policies/runtime-benchmarks', + 'roaming-agreement-policies/runtime-benchmarks', + 'roaming-network-profiles/runtime-benchmarks', + 'roaming-device-profiles/runtime-benchmarks', + 'roaming-sessions/runtime-benchmarks', + 'roaming-billing-policies/runtime-benchmarks', + 'roaming-charging-policies/runtime-benchmarks', + 'roaming-packet-bundles/runtime-benchmarks', + 'mining-setting-token/runtime-benchmarks', + 'mining-setting-hardware/runtime-benchmarks', + 'mining-rates-token/runtime-benchmarks', + 'mining-rates-hardware/runtime-benchmarks', + 'mining-sampling-token/runtime-benchmarks', + 'mining-sampling-hardware/runtime-benchmarks', + 'mining-eligibility-token/runtime-benchmarks', + 'mining-eligibility-hardware/runtime-benchmarks', + 'mining-eligibility-proxy/runtime-benchmarks', + 'mining-lodgements-hardware/runtime-benchmarks', + 'mining-claims-token/runtime-benchmarks', + 'mining-claims-hardware/runtime-benchmarks', + 'mining-execution-token/runtime-benchmarks', + 'exchange-rate/runtime-benchmarks', + 'treasury-dao/runtime-benchmarks', ] try-runtime = [ @@ -232,4 +294,35 @@ try-runtime = [ 'pallet-tips/try-runtime', 'pallet-treasury/try-runtime', 'pallet-utility/try-runtime', + 'membership-supernodes/try-runtime', + 'roaming-operators/try-runtime', + 'roaming-networks/try-runtime', + 'roaming-organizations/try-runtime', + 'roaming-network-servers/try-runtime', + 'roaming-devices/try-runtime', + 'roaming-routing-profiles/try-runtime', + 'roaming-service-profiles/try-runtime', + 'roaming-accounting-policies/try-runtime', + 'roaming-agreement-policies/try-runtime', + 'roaming-network-profiles/try-runtime', + 'roaming-device-profiles/try-runtime', + 'roaming-sessions/try-runtime', + 'roaming-billing-policies/try-runtime', + 'roaming-charging-policies/try-runtime', + 'roaming-packet-bundles/try-runtime', + 'mining-setting-token/try-runtime', + 'mining-setting-hardware/try-runtime', + 'mining-rates-token/try-runtime', + 'mining-rates-hardware/try-runtime', + 'mining-sampling-token/try-runtime', + 'mining-sampling-hardware/try-runtime', + 'mining-eligibility-token/try-runtime', + 'mining-eligibility-hardware/try-runtime', + 'mining-eligibility-proxy/try-runtime', + 'mining-lodgements-hardware/try-runtime', + 'mining-claims-token/try-runtime', + 'mining-claims-hardware/try-runtime', + 'mining-execution-token/try-runtime', + 'exchange-rate/try-runtime', + 'treasury-dao/try-runtime', ] diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 1143dbfa..1938a984 100755 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -233,7 +233,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("datahighway-parachain"), impl_name: create_runtime_str!("datahighway-parachain"), authoring_version: 2, - spec_version: 4, + spec_version: 5, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -1013,6 +1013,231 @@ impl pallet_indices::Config for Runtime { type WeightInfo = pallet_indices::weights::SubstrateWeight; } +impl roaming_operators::Config for Runtime { + type Currency = Balances; + type Event = Event; + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; +} + +impl roaming_networks::Config for Runtime { + type Event = Event; + type RoamingNetworkIndex = u64; +} + +impl roaming_organizations::Config for Runtime { + type Event = Event; + type RoamingOrganizationIndex = u64; +} + +impl roaming_network_servers::Config for Runtime { + type Event = Event; + type RoamingNetworkServerIndex = u64; +} + +impl roaming_devices::Config for Runtime { + type Event = Event; + type RoamingDeviceIndex = u64; +} + +impl roaming_routing_profiles::Config for Runtime { + type Event = Event; + // https://polkadot.js.org/api/types/#primitive-types + type RoamingRoutingProfileAppServer = Vec; + type RoamingRoutingProfileIndex = u64; +} + +impl roaming_service_profiles::Config for Runtime { + type Event = Event; + type RoamingServiceProfileDownlinkRate = u32; + type RoamingServiceProfileIndex = u64; + type RoamingServiceProfileUplinkRate = u32; +} + +impl roaming_accounting_policies::Config for Runtime { + type Event = Event; + type RoamingAccountingPolicyDownlinkFeeFactor = u32; + type RoamingAccountingPolicyIndex = u64; + type RoamingAccountingPolicyType = Vec; + type RoamingAccountingPolicyUplinkFeeFactor = u32; +} + +impl roaming_agreement_policies::Config for Runtime { + type Event = Event; + type RoamingAgreementPolicyActivationType = Vec; + type RoamingAgreementPolicyIndex = u64; // as Config>::Moment` timestamp::Module::Moment; +} + +impl roaming_network_profiles::Config for Runtime { + type Event = Event; + type RoamingNetworkProfileIndex = u64; +} + +impl roaming_device_profiles::Config for Runtime { + type Event = Event; + type RoamingDeviceProfileDevAddr = Vec; + type RoamingDeviceProfileDevEUI = Vec; + type RoamingDeviceProfileIndex = u64; + type RoamingDeviceProfileJoinEUI = Vec; + type RoamingDeviceProfileVendorID = Vec; +} + +impl roaming_sessions::Config for Runtime { + type Event = Event; + type RoamingSessionIndex = u64; +} + +impl roaming_billing_policies::Config for Runtime { + type Event = Event; + type RoamingBillingPolicyIndex = u64; +} + +impl roaming_charging_policies::Config for Runtime { + type Event = Event; + type RoamingChargingPolicyIndex = u64; +} + +impl roaming_packet_bundles::Config for Runtime { + type Event = Event; + type RoamingPacketBundleExternalDataStorageHash = Hash; + type RoamingPacketBundleIndex = u64; + type RoamingPacketBundleReceivedAtHome = bool; + type RoamingPacketBundleReceivedPacketsCount = u64; + type RoamingPacketBundleReceivedPacketsOkCount = u64; +} + +impl mining_setting_token::Config for Runtime { + type Event = Event; + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingTokenIndex = u64; + type MiningSettingTokenLockAmount = u64; + // Mining Speed Boost Token Mining Config + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingTokenType = Vec; +} + +impl mining_setting_hardware::Config for Runtime { + type Event = Event; + type MiningSettingHardwareDevEUI = u64; + // type MiningSettingHardwareType = + // MiningSettingHardwareTypes; + type MiningSettingHardwareID = u64; + // FIXME - restore when stop temporarily using roaming-operators + // type Currency = Balances; + // type Randomness = RandomnessCollectiveFlip; + type MiningSettingHardwareIndex = u64; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure = bool; + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingHardwareType = Vec; +} + +impl mining_rates_token::Config for Runtime { + type Event = Event; + type MiningRatesTokenIndex = u64; + type MiningRatesTokenMaxLoyalty = u32; + // Mining Speed Boost Max Rates + type MiningRatesTokenMaxToken = u32; + type MiningRatesTokenTokenDOT = u32; + type MiningRatesTokenTokenIOTA = u32; + // Mining Speed Boost Rate + type MiningRatesTokenTokenMXC = u32; +} + +impl mining_rates_hardware::Config for Runtime { + type Event = Event; + type MiningRatesHardwareCategory1MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory2MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory3MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareIndex = u64; + type MiningRatesHardwareInsecure = u32; + // Mining Speed Boost Max Rates + type MiningRatesHardwareMaxHardware = u32; + // Mining Speed Boost Rate + type MiningRatesHardwareSecure = u32; +} + +impl mining_sampling_token::Config for Runtime { + type Event = Event; + type MiningSamplingTokenIndex = u64; + type MiningSamplingTokenSampleLockedAmount = u64; +} + +impl mining_sampling_hardware::Config for Runtime { + type Event = Event; + type MiningSamplingHardwareIndex = u64; + type MiningSamplingHardwareSampleHardwareOnline = u64; +} + +impl mining_eligibility_token::Config for Runtime { + type Event = Event; + type MiningEligibilityTokenCalculatedEligibility = u64; + type MiningEligibilityTokenIndex = u64; + type MiningEligibilityTokenLockedPercentage = u32; + // type MiningEligibilityTokenAuditorAccountID = u64; +} + +impl mining_eligibility_hardware::Config for Runtime { + type Event = Event; + type MiningEligibilityHardwareCalculatedEligibility = u64; + type MiningEligibilityHardwareIndex = u64; + type MiningEligibilityHardwareUptimePercentage = u32; + // type MiningEligibilityHardwareAuditorAccountID = u64; +} + +impl mining_eligibility_proxy::Config for Runtime { + type Event = Event; + type Currency = Balances; + type Randomness = RandomnessCollectiveFlip; + // Check membership + type MembershipSource = MembershipSupernodes; + type MiningEligibilityProxyIndex = u64; + type RewardsOfDay = u64; +} + +impl mining_lodgements_hardware::Config for Runtime { + type Event = Event; + type MiningLodgementsHardwareIndex = u64; +} + +impl mining_claims_token::Config for Runtime { + type Event = Event; + type MiningClaimsTokenClaimAmount = u64; + type MiningClaimsTokenIndex = u64; +} + +impl mining_claims_hardware::Config for Runtime { + type Event = Event; + type MiningClaimsHardwareClaimAmount = u64; + type MiningClaimsHardwareIndex = u64; +} + +impl mining_execution_token::Config for Runtime { + type Event = Event; + type MiningExecutionTokenIndex = u64; +} + +impl exchange_rate::Config for Runtime { + type DOTRate = u64; + type DecimalsAfterPoint = u32; + type Event = Event; + type ExchangeRateIndex = u64; + type FILRate = u64; + type HBTCRate = u64; + type IOTARate = u64; +} + +impl membership_supernodes::Config for Runtime { + type Event = Event; +} + +impl treasury_dao::Config for Runtime { + type Event = Event; + type Currency = Balances; +} + parameter_types! { pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4; pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4; @@ -1134,6 +1359,37 @@ construct_runtime!( Multisig: pallet_multisig, Referenda: pallet_referenda, ConvictionVoting: pallet_conviction_voting, + MembershipSupernodes: membership_supernodes::{Pallet, Call, Storage, Event}, + RoamingOperators: roaming_operators::{Pallet, Call, Storage, Event}, + RoamingNetworks: roaming_networks::{Pallet, Call, Storage, Event}, + RoamingOrganizations: roaming_organizations::{Pallet, Call, Storage, Event}, + RoamingNetworkServers: roaming_network_servers::{Pallet, Call, Storage, Event}, + RoamingDevices: roaming_devices::{Pallet, Call, Storage, Event}, + RoamingRoutingProfiles: roaming_routing_profiles::{Pallet, Call, Storage, Event}, + RoamingServiceProfiles: roaming_service_profiles::{Pallet, Call, Storage, Event}, + RoamingAccountingPolicies: roaming_accounting_policies::{Pallet, Call, Storage, Event}, + RoamingAgreementPolicies: roaming_agreement_policies::{Pallet, Call, Storage, Event}, + RoamingNetworkProfiles: roaming_network_profiles::{Pallet, Call, Storage, Event}, + RoamingDeviceProfiles: roaming_device_profiles::{Pallet, Call, Storage, Event}, + RoamingSessions: roaming_sessions::{Pallet, Call, Storage, Event}, + RoamingBillingPolicies: roaming_billing_policies::{Pallet, Call, Storage, Event}, + RoamingChargingPolicies: roaming_charging_policies::{Pallet, Call, Storage, Event}, + RoamingPacketBundles: roaming_packet_bundles::{Pallet, Call, Storage, Event}, + MiningSettingToken: mining_setting_token::{Pallet, Call, Storage, Event}, + MiningSettingHardware: mining_setting_hardware::{Pallet, Call, Storage, Event}, + MiningRatesToken: mining_rates_token::{Pallet, Call, Storage, Event}, + MiningRatesHardware: mining_rates_hardware::{Pallet, Call, Storage, Event}, + MiningSamplingToken: mining_sampling_token::{Pallet, Call, Storage, Event}, + MiningSamplingHardware: mining_sampling_hardware::{Pallet, Call, Storage, Event}, + MiningEligibilityToken: mining_eligibility_token::{Pallet, Call, Storage, Event}, + MiningEligibilityHardware: mining_eligibility_hardware::{Pallet, Call, Storage, Event}, + MiningEligibilityProxy: mining_eligibility_proxy::{Pallet, Call, Storage, Event}, + MiningLodgementsHardware: mining_lodgements_hardware::{Pallet, Call, Storage, Event}, + MiningClaimsToken: mining_claims_token::{Pallet, Call, Storage, Event}, + MiningClaimsHardware: mining_claims_hardware::{Pallet, Call, Storage, Event}, + MiningExecutionToken: mining_execution_token::{Pallet, Call, Storage, Event}, + ExchangeRate: exchange_rate::{Pallet, Call, Storage, Event}, + TreasuryDao: treasury_dao::{Pallet, Call, Storage, Event}, } ); @@ -1168,6 +1424,36 @@ mod benches { [pallet_multisig, Multisig] [pallet_referenda, Referenda] [pallet_conviction_voting, ConvictionVoting] + [membership_supernodes, MembershipSupernodes] + [roaming_operators, RoamingOperators] + [roaming_networks, RoamingNetworks] + [roaming_organizations, RoamingOrganizations] + [roaming_network_servers, RoamingNetworkServers] + [roaming_devices, RoamingDevices] + [roaming_routing_profiles, RoamingRoutingProfiles] + [roaming_service_profiles, RoamingServiceProfiles] + [roaming_accounting_policies, RoamingAccountingPolicies] + [roaming_agreement_policies, RoamingAgreementPolicies] + [roaming_network_profiles, RoamingNetworkProfiles] + [roaming_device_profiles, RoamingDeviceProfiles] + [roaming_sessions, RoamingSessions] + [roaming_billing_policies, RoamingBillingPolicies] + [roaming_charging_policies, RoamingChargingPolicies] + [roaming_packet_bundles, RoamingPacketBundles] + [mining_setting_token, MiningSettingToken] + [mining_rates_token, MiningRatesToken] + [mining_rates_hardware, MiningRatesHardware] + [mining_sampling_token, MiningSamplingToken] + [mining_sampling_hardware, MiningSamplingHardware] + [mining_eligibility_token, MiningEligibilityToken] + [mining_eligibility_hardware, MiningEligibilityHardware] + [mining_eligibility_proxy, MiningEligibilityProxy] + [mining_lodgements_hardware, MiningLodgementsHardware] + [mining_claims_token, MiningClaimsToken] + [mining_claims_hardware, MiningClaimsHardware] + [mining_execution_token, MiningExecutionToken] + [exchange_rate, ExchangeRate] + [treasury_dao, TreasuryDao] ); } diff --git a/runtime/tests/cli_integration_tests_mining_hardware.rs b/runtime/tests/cli_integration_tests_mining_hardware.rs new file mode 100755 index 00000000..270eb544 --- /dev/null +++ b/runtime/tests/cli_integration_tests_mining_hardware.rs @@ -0,0 +1,406 @@ +// extern crate env as env; +extern crate mining_claims_hardware as mining_claims_hardware; +extern crate mining_setting_hardware as mining_setting_hardware; +extern crate mining_eligibility_hardware as mining_eligibility_hardware; +extern crate mining_rates_hardware as mining_rates_hardware; +extern crate mining_sampling_hardware as mining_sampling_hardware; +extern crate roaming_operators as roaming_operators; + +#[cfg(test)] +mod tests { + use super::*; + + use frame_support::{ + assert_ok, + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, + }; + use sp_core::H256; + use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + }; + pub use pallet_transaction_payment::{ + CurrencyAdapter, + }; + // Import Config for each runtime module being tested + use mining_claims_hardware::{ + MiningClaimsHardwareClaimResult, + Module as MiningClaimsHardwareModule, + Config as MiningClaimsHardwareConfig, + }; + use mining_setting_hardware::{ + MiningSettingHardwareSetting, + Module as MiningSettingHardwareModule, + Config as MiningSettingHardwareConfig, + }; + use mining_eligibility_hardware::{ + MiningEligibilityHardwareResult, + Module as MiningEligibilityHardwareModule, + Config as MiningEligibilityHardwareConfig, + }; + use mining_rates_hardware::{ + MiningRatesHardwareSetting, + Module as MiningRatesHardwareModule, + Config as MiningRatesHardwareConfig, + }; + use mining_sampling_hardware::{ + MiningSamplingHardwareSetting, + Module as MiningSamplingHardwareModule, + Config as MiningSamplingHardwareConfig, + }; + use roaming_operators; + + // pub fn origin_of(who: &AccountId) -> ::Origin { + // ::Origin::signed((*who).clone()) + // } + + type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + type Block = frame_system::mocking::MockBlock; + + frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + } + ); + + parameter_types! { + pub const BlockHashCount: u32 = 250; + pub const SS58Prefix: u16 = 33; + } + impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; + } + impl pallet_randomness_collective_flip::Config for Test {} + pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; + parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; + } + impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); + } + impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = CurrencyAdapter; + type TransactionByteFee = (); + type OperationalFeeMultiplier = (); + type WeightToFee = IdentityFee; + } + // FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself + impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; + } + impl MiningSettingHardwareConfig for Test { + type Event = (); + type MiningSettingHardwareDevEUI = u64; + // type MiningSettingHardwareType = + // MiningSettingHardwareTypes; + type MiningSettingHardwareID = u64; + // type Currency = Balances; + // type Randomness = Randomness; + type MiningSettingHardwareIndex = u64; + // Mining Speed Boost Hardware Mining Config + type MiningSettingHardwareSecure = bool; + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingHardwareType = Vec; + } + impl MiningRatesHardwareConfig for Test { + type Event = (); + type MiningRatesHardwareCategory1MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory2MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareCategory3MaxTokenBonusPerGateway = u32; + type MiningRatesHardwareIndex = u64; + type MiningRatesHardwareInsecure = u32; + // Mining Speed Boost Max Rates + type MiningRatesHardwareMaxHardware = u32; + // Mining Speed Boost Rate + type MiningRatesHardwareSecure = u32; + } + impl MiningSamplingHardwareConfig for Test { + type Event = (); + type MiningSamplingHardwareIndex = u64; + type MiningSamplingHardwareSampleHardwareOnline = u64; + } + impl MiningEligibilityHardwareConfig for Test { + type Event = (); + type MiningEligibilityHardwareCalculatedEligibility = u64; + type MiningEligibilityHardwareIndex = u64; + type MiningEligibilityHardwareUptimePercentage = u32; + // type MiningEligibilityHardwareAuditorAccountID = u64; + } + impl MiningClaimsHardwareConfig for Test { + type Event = (); + type MiningClaimsHardwareClaimAmount = u64; + type MiningClaimsHardwareIndex = u64; + } + + pub type MiningSettingHardwareTestModule = MiningSettingHardwareModule; + pub type MiningRatesHardwareTestModule = MiningRatesHardwareModule; + pub type MiningSamplingHardwareTestModule = MiningSamplingHardwareModule; + pub type MiningEligibilityHardwareTestModule = MiningEligibilityHardwareModule; + pub type MiningClaimsHardwareTestModule = MiningClaimsHardwareModule; + pub type Randomness = pallet_randomness_collective_flip::Pallet; + + // This function basically just builds a genesis storage key/value store according to + // our desired mockup. + pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext + } + + // Create Users on Data Highway + #[test] + fn setup_users() { + new_test_ext().execute_with(|| { + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + assert_eq!(Balances::free_balance(3), 30); + assert_eq!(Balances::reserved_balance(&1), 0); + // FIXME - why can't I query `total_balance` from the Balances frame + // assert_eq!(Balances::total_balance(&1), 0); + }); + } + + #[test] + fn integration_test() { + new_test_ext().execute_with(|| { + // env::config::set_test_env(); + + // Create Mining Speed Boost Rates Hardware Mining + + // Call Functions + assert_ok!(MiningRatesHardwareTestModule::create(Origin::signed(0))); + assert_ok!(MiningRatesHardwareTestModule::set_mining_rates_hardware_rates_config( + Origin::signed(0), + 0, // mining_rates_hardware_id + // FIXME - convert all below types to Vec since float values? i.e. b"1.025".to_vec() + Some(1), // hardware_hardware_secure + Some(1), // hardware_hardware_insecure + Some(1), // hardware_max_hardware + Some(1000000), + Some(500000), + Some(250000) + )); + + // Verify Storage + assert_eq!(MiningRatesHardwareTestModule::mining_rates_hardware_count(), 1); + assert!(MiningRatesHardwareTestModule::mining_rates_hardware(0).is_some()); + assert_eq!(MiningRatesHardwareTestModule::mining_rates_hardware_owner(0), Some(0)); + assert_eq!( + MiningRatesHardwareTestModule::mining_rates_hardware_rates_configs(0), + Some(MiningRatesHardwareSetting { + hardware_hardware_secure: 1, + hardware_hardware_insecure: 1, + hardware_max_hardware: 1, + hardware_category_1_max_token_bonus_per_gateway: 1000000, + hardware_category_2_max_token_bonus_per_gateway: 500000, + hardware_category_3_max_token_bonus_per_gateway: 250000 + }) + ); + + // Create Mining Speed Boost Configuration Hardware Mining + + // Call Functions + assert_ok!(MiningSettingHardwareTestModule::create(Origin::signed(0))); + assert_ok!(MiningSettingHardwareTestModule::set_mining_setting_hardware_hardware_config( + Origin::signed(0), + 0, // mining_hardware_id + Some(true), // hardware_secure + Some(b"gateway".to_vec()), // hardware_type + Some(1), // hardware_id + Some(12345), // hardware_dev_eui + Some(23456), // hardware_lock_start_block + Some(34567), // hardware_lock_interval_blocks + )); + + // Verify Storage + assert_eq!(MiningSettingHardwareTestModule::mining_setting_hardware_count(), 1); + assert!(MiningSettingHardwareTestModule::mining_setting_hardware(0).is_some()); + assert_eq!(MiningSettingHardwareTestModule::mining_setting_hardware_owner(0), Some(0)); + assert_eq!( + MiningSettingHardwareTestModule::mining_setting_hardware_hardware_configs(0), + Some(MiningSettingHardwareSetting { + hardware_secure: true, + hardware_type: b"gateway".to_vec(), + hardware_id: 1, + hardware_dev_eui: 12345, + hardware_lock_start_block: 23456, + hardware_lock_interval_blocks: 34567, + }) + ); + + // Create Mining Speed Boost Sampling Hardware Mining + + // Call Functions + assert_ok!(MiningSamplingHardwareTestModule::create(Origin::signed(0))); + assert_ok!(MiningSamplingHardwareTestModule::set_mining_samplings_hardware_samplings_config( + Origin::signed(0), + 0, // mining_sampling_hardware_id + 0, // mining_sampling_hardware_sample_id + Some(23456), // hardware_sample_block + Some(1), // hardware_sample_hardware_online + )); + assert_ok!(MiningSamplingHardwareTestModule::assign_sampling_to_configuration(Origin::signed(0), 0, 0)); + + // Verify Storage + assert_eq!(MiningSamplingHardwareTestModule::mining_samplings_hardware_count(), 1); + assert!(MiningSamplingHardwareTestModule::mining_samplings_hardware(0).is_some()); + assert_eq!(MiningSamplingHardwareTestModule::mining_samplings_hardware_owner(0), Some(0)); + assert_eq!( + MiningSamplingHardwareTestModule::mining_samplings_hardware_samplings_configs((0, 0)), + Some(MiningSamplingHardwareSetting { + hardware_sample_block: 23456, // hardware_sample_block + hardware_sample_hardware_online: 1 // hardware_sample_hardware_online + }) + ); + + // Create Mining Speed Boost Eligibility Hardware Mining + + // Call Functions + assert_ok!(MiningEligibilityHardwareTestModule::create(Origin::signed(0))); + // assert_eq!( + // MiningEligibilityTestModule::calculate_mining_eligibility_hardware_result( + // Origin::signed(0), + // 0, // mining_setting_hardware_id + // 0, // mining_eligibility_hardware_id + // ), + // Some( + // MiningEligibilityHardwareResult { + // hardware_calculated_eligibility: 1.1 + // // to determine eligibility for proportion (incase user moves funds around during lock + // period) hardware_uptime_percentage: 0.3, + // // hardware_block_audited: 123, + // // hardware_auditor_account_id: 123 + // } + // ) + // )) + + // Override by DAO if necessary + assert_ok!(MiningEligibilityHardwareTestModule::set_mining_eligibility_hardware_eligibility_result( + Origin::signed(0), + 0, // mining_setting_hardware_id + 0, // mining_eligibility_hardware_id + Some(1), // mining_hardware_calculated_eligibility + Some(1), /* mining_hardware_uptime_percentage + * 123, // mining_hardware_block_audited + * 123, // mining_hardware_auditor_account_id + * Some({ + * MiningEligibilityHardwareResult { + * hardware_calculated_eligibility: 1, + * // to determine eligibility for proportion (incase user moves funds around + * during lock period) hardware_uptime_percentage: 1, + * // hardware_block_audited: 123, + * // hardware_auditor_account_id: 123 + * } + * }), */ + )); + assert_ok!(MiningEligibilityHardwareTestModule::assign_eligibility_to_configuration( + Origin::signed(0), + 0, + 0 + )); + + // Verify Storage + assert_eq!(MiningEligibilityHardwareTestModule::mining_eligibility_hardware_count(), 1); + assert!(MiningEligibilityHardwareTestModule::mining_eligibility_hardware(0).is_some()); + assert_eq!(MiningEligibilityHardwareTestModule::mining_eligibility_hardware_owner(0), Some(0)); + assert_eq!( + MiningEligibilityHardwareTestModule::mining_eligibility_hardware_eligibility_results((0, 0)), + Some(MiningEligibilityHardwareResult { + hardware_calculated_eligibility: 1, + // to determine eligibility for proportion (incase user moves funds around during lock period) + hardware_uptime_percentage: 1, + /* hardware_block_audited: 123, + * hardware_auditor_account_id: 123 */ + }) + ); + + // Create Mining Speed Boost Claims Hardware Mining + + // // Call Functions + assert_ok!(MiningClaimsHardwareTestModule::create(Origin::signed(0))); + assert_ok!(MiningClaimsHardwareTestModule::assign_claim_to_configuration(Origin::signed(0), 0, 0)); + // assert_ok!( + // MiningClaimsHardwareTestModule::claim( + // Origin::signed(0), + // 0, // mining_setting_hardware_id + // 0, // mining_eligibility_hardware_id + // 0, // mining_claims_hardware_id + // ) + // ) + // Override by DAO if necessary + assert_ok!(MiningClaimsHardwareTestModule::set_mining_claims_hardware_claims_result( + Origin::signed(0), + 0, // mining_setting_hardware_id + 0, // mining_eligibility_hardware_id + 0, // mining_claims_hardware_id + Some(1), // hardware_claim_amount + Some(34567), // hardware_claim_block_redeemed + )); + + // Verify Storage + assert_eq!(MiningClaimsHardwareTestModule::mining_claims_hardware_count(), 1); + assert!(MiningClaimsHardwareTestModule::mining_claims_hardware(0).is_some()); + assert_eq!(MiningClaimsHardwareTestModule::mining_claims_hardware_owner(0), Some(0)); + assert_eq!( + MiningClaimsHardwareTestModule::mining_claims_hardware_claims_results((0, 0)), + Some(MiningClaimsHardwareClaimResult { + hardware_claim_amount: 1, + hardware_claim_block_redeemed: 34567, + }) + ); + }); + } +} diff --git a/runtime/tests/cli_integration_tests_mining_tokens.rs b/runtime/tests/cli_integration_tests_mining_tokens.rs new file mode 100755 index 00000000..4c5b837a --- /dev/null +++ b/runtime/tests/cli_integration_tests_mining_tokens.rs @@ -0,0 +1,455 @@ +// extern crate env as env; +extern crate membership_supernodes as membership_supernodes; +extern crate mining_claims_token as mining_claims_token; +extern crate mining_eligibility_proxy as mining_eligibility_proxy; +extern crate mining_eligibility_token as mining_eligibility_token; +extern crate mining_execution_token as mining_execution_token; +extern crate mining_rates_token as mining_rates_token; +extern crate mining_sampling_token as mining_sampling_token; +extern crate mining_setting_token as mining_setting_token; +extern crate roaming_operators as roaming_operators; + +#[cfg(test)] +mod tests { + use super::*; + + use frame_support::{ + assert_ok, + parameter_types, + weights::{ + IdentityFee, + Weight, + }, + }; + use frame_support::traits::Everything; + use sp_core::H256; + use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + Zero, + }, + DispatchResult, + Perbill, + Permill, + }; + // Import Config for each runtime module being tested + use membership_supernodes::{ + Config as MembershipSupernodesConfig, + Module as MembershipSupernodesModule, + }; + use mining_claims_token::{ + Config as MiningClaimsTokenConfig, + MiningClaimsTokenClaimResult, + Module as MiningClaimsTokenModule, + }; + use mining_eligibility_token::{ + Config as MiningEligibilityTokenConfig, + MiningEligibilityTokenResult, + Module as MiningEligibilityTokenModule, + }; + use mining_execution_token::{ + Config as MiningExecutionTokenConfig, + MiningExecutionTokenExecutionResult, + Module as MiningExecutionTokenModule, + }; + use mining_rates_token::{ + Config as MiningRatesTokenConfig, + MiningRatesTokenSetting, + Module as MiningRatesTokenModule, + }; + use mining_sampling_token::{ + Config as MiningSamplingTokenConfig, + MiningSamplingTokenSetting, + Module as MiningSamplingTokenModule, + }; + use mining_setting_token::{ + Config as MiningSettingTokenConfig, + MiningSettingTokenRequirementsSetting, + MiningSettingTokenSetting, + Module as MiningSettingTokenModule, + }; + use roaming_operators; + + // pub fn origin_of(who: &AccountId) -> ::Origin { + // ::Origin::signed((*who).clone()) + // } + + type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + type Block = frame_system::mocking::MockBlock; + + frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Storage, Config, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + } + ); + + parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const SS58Prefix: u8 = 33; + } + impl frame_system::Config for Test { + type AccountData = pallet_balances::AccountData; + type AccountId = u64; + type BaseCallFilter = Everything; + type BlockHashCount = BlockHashCount; + type BlockLength = (); + type BlockNumber = u64; + type BlockWeights = (); + type Call = Call; + type DbWeight = (); + type Event = (); + type Hash = H256; + type Hashing = BlakeTwo256; + type Header = Header; + type Index = u64; + type Lookup = IdentityLookup; + type MaxConsumers = frame_support::traits::ConstU32<16>; + type OnKilledAccount = (); + type OnNewAccount = (); + type OnSetCode = (); + type Origin = Origin; + type PalletInfo = PalletInfo; + type SS58Prefix = (); + type SystemWeightInfo = (); + type Version = (); + } + parameter_types! { + pub const ExistentialDeposit: u64 = 1; + } + impl pallet_balances::Config for Test { + type AccountStore = System; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ExistentialDeposit; + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type WeightInfo = (); + } + parameter_types! { + pub const OperationalFeeMultiplier: u8 = 5; + pub const TransactionByteFee: u64 = 1; + } + + impl pallet_randomness_collective_flip::Config for Test {} + impl pallet_transaction_payment::Config for Test { + type OperationalFeeMultiplier = OperationalFeeMultiplier; + type FeeMultiplierUpdate = (); + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type WeightToFee = IdentityFee; + } + // FIXME - remove this when figure out how to use these types within mining-speed-boost runtime module itself + impl roaming_operators::Config for Test { + type Currency = Balances; + type Event = (); + type Randomness = Randomness; + type RoamingOperatorIndex = u64; + } + impl MiningSettingTokenConfig for Test { + type Event = (); + // type Currency = Balances; + // type Randomness = Randomness; + type MiningSettingTokenIndex = u64; + type MiningSettingTokenLockAmount = u64; + // Mining Speed Boost Token Mining Config + // FIXME - how to use this enum from std? (including importing `use std::str::FromStr;`) + type MiningSettingTokenType = Vec; + } + impl MiningRatesTokenConfig for Test { + type Event = (); + type MiningRatesTokenIndex = u64; + type MiningRatesTokenMaxLoyalty = u32; + // Mining Speed Boost Max Rates + type MiningRatesTokenMaxToken = u32; + type MiningRatesTokenTokenDOT = u32; + type MiningRatesTokenTokenIOTA = u32; + // Mining Speed Boost Rate + type MiningRatesTokenTokenMXC = u32; + } + impl MiningSamplingTokenConfig for Test { + type Event = (); + type MiningSamplingTokenIndex = u64; + type MiningSamplingTokenSampleLockedAmount = u64; + } + impl MiningEligibilityTokenConfig for Test { + type Event = (); + type MiningEligibilityTokenCalculatedEligibility = u64; + type MiningEligibilityTokenIndex = u64; + type MiningEligibilityTokenLockedPercentage = u32; + // type MiningEligibilityTokenAuditorAccountID = u64; + } + + impl MiningClaimsTokenConfig for Test { + type Event = (); + type MiningClaimsTokenClaimAmount = u64; + type MiningClaimsTokenIndex = u64; + } + impl MiningExecutionTokenConfig for Test { + type Event = (); + type MiningExecutionTokenIndex = u64; + } + impl MembershipSupernodesConfig for Test { + type Event = (); + } + + pub type MiningSettingTokenTestModule = MiningSettingTokenModule; + pub type MiningRatesTokenTestModule = MiningRatesTokenModule; + pub type MiningSamplingTokenTestModule = MiningSamplingTokenModule; + pub type MiningEligibilityTokenTestModule = MiningEligibilityTokenModule; + pub type MiningClaimsTokenTestModule = MiningClaimsTokenModule; + pub type MiningExecutionTokenTestModule = MiningExecutionTokenModule; + pub type MembershipSupernodesTestModule = MembershipSupernodesModule; + type Randomness = pallet_randomness_collective_flip::Pallet; + type MembershipSupernodes = membership_supernodes::Pallet; + + // This function basically just builds a genesis storage key/value store according to + // our desired mockup. + pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext + } + + // Create Users on Data Highway + #[test] + fn setup_users() { + new_test_ext().execute_with(|| { + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + assert_eq!(Balances::free_balance(3), 30); + assert_eq!(Balances::reserved_balance(&1), 0); + // FIXME - why can't I query `total_balance` from the Balances frame + // assert_eq!(Balances::total_balance(&1), 0); + }); + } + + #[test] + fn integration_test() { + new_test_ext().execute_with(|| { + // env::config::set_test_env(); + + // Create Mining Speed Boost Rates Token Mining + + // Call Functions + assert_ok!(MiningRatesTokenTestModule::create(Origin::signed(0))); + assert_ok!(MiningRatesTokenTestModule::set_mining_rates_token_rates_config( + Origin::signed(0), + 0, // mining_rates_token_id + // FIXME - convert all below types to Vec since float values? i.e. b"1.025".to_vec() + Some(1), // token_token_mxc + Some(1), // token_token_iota + Some(1), // token_token_dot + Some(1), // token_max_token + Some(1), // token_max_loyalty + )); + + // Verify Storage + assert_eq!(MiningRatesTokenTestModule::mining_rates_token_count(), 1); + assert!(MiningRatesTokenTestModule::mining_rates_token(0).is_some()); + assert_eq!(MiningRatesTokenTestModule::mining_rates_token_owner(0), Some(0)); + assert_eq!( + MiningRatesTokenTestModule::mining_rates_token_rates_configs(0), + Some(MiningRatesTokenSetting { + token_token_mxc: 1, + token_token_iota: 1, + token_token_dot: 1, + token_max_token: 1, + token_max_loyalty: 1, + }) + ); + + // Create Mining Speed Boost Configuration Token Mining + + // Call Functions + assert_ok!(MiningSettingTokenTestModule::create(Origin::signed(0))); + assert_ok!(MiningSettingTokenTestModule::set_mining_setting_token_token_cooldown_config( + Origin::signed(0), + 0, // mining_token_id + Some(b"DHX".to_vec()), // token_type + Some(10), // token_lock_min_amount + Some(7), // token_lock_min_blocks + )); + assert_ok!(MiningSettingTokenTestModule::set_mining_setting_token_token_setting( + Origin::signed(0), + 0, // mining_token_id + Some(b"MXC".to_vec()), // token_type + Some(100), // token_lock_amount + Some(12345), // token_lock_start_block + Some(23456), // token_lock_interval_blocks + )); + + // Verify Storage + assert_eq!(MiningSettingTokenTestModule::mining_setting_token_count(), 1); + assert!(MiningSettingTokenTestModule::mining_setting_token(0).is_some()); + assert_eq!(MiningSettingTokenTestModule::mining_setting_token_owner(0), Some(0)); + assert_eq!( + MiningSettingTokenTestModule::mining_setting_token_token_cooldown_configs(0), + Some(MiningSettingTokenRequirementsSetting { + token_type: b"DHX".to_vec(), // token_type + token_lock_min_amount: 10, // token_lock_min_amount + token_lock_min_blocks: 7, // token_lock_min_blocks + }) + ); + assert_eq!( + MiningSettingTokenTestModule::mining_setting_token_token_settings(0), + Some(MiningSettingTokenSetting { + token_type: b"MXC".to_vec(), // token_type + token_lock_amount: 100, // token_lock_amount + token_lock_start_block: 12345, // token_lock_start_block + token_lock_interval_blocks: 23456, // token_lock_interval_blocks + }) + ); + + // Create Mining Speed Boost Sampling Token Mining + + // Call Functions + assert_ok!(MiningSamplingTokenTestModule::create(Origin::signed(0))); + assert_ok!(MiningSamplingTokenTestModule::set_mining_samplings_token_samplings_config( + Origin::signed(0), + 0, // mining_token_id + 0, // mining_token_sample_id + Some(23456), // token_sample_block + Some(100), // token_sample_locked_amount + )); + assert_ok!(MiningSamplingTokenTestModule::assign_sampling_to_configuration(Origin::signed(0), 0, 0)); + + // Verify Storage + assert_eq!(MiningSamplingTokenTestModule::mining_samplings_token_count(), 1); + assert!(MiningSamplingTokenTestModule::mining_samplings_token(0).is_some()); + assert_eq!(MiningSamplingTokenTestModule::mining_samplings_token_owner(0), Some(0)); + assert_eq!( + MiningSamplingTokenTestModule::mining_samplings_token_samplings_configs((0, 0)), + Some(MiningSamplingTokenSetting { + token_sample_block: 23456, // token_sample_block + token_sample_locked_amount: 100 // token_sample_locked_amount + }) + ); + + // Create Mining Speed Boost Eligibility Token Mining + + // On random sampling dates an oracle service audits and published logs + // of how many tokens were locked and stores them in sampling instances + // using the sampling token mining runtime module, where each sample belongs to a token + // mining configuration (with start and end date) from the configuration + // token mining runtime module. + // + // TODO - record the account id of the user who runs the oracle service and provides + // the sampling of the logs. + // + // After the configuration's end date, the eligibility token mining runtime module + // is used to aggregate the samplings that correspond to the configuration + // and use that to calculate the eligibility of the token owner for receiving rewards. + // The account id of the an auditor who may be involved in auditing the eligibility + // outcome may also be recorded. + // Note that we can find out all the samples associated with a + // mining_speed_boosts_configuration_token_mining_id + + // Call Functions + assert_ok!(MiningEligibilityTokenTestModule::create(Origin::signed(0))); + // assert_eq!( + // MiningSpeedBoostEligibilityTokenMiningTestModule:: + // calculate_mining_speed_boosts_eligibility_token_mining_result( Origin::signed(0), + // 0, // mining_speed_boosts_configuration_token_mining_id + // 0, // mining_speed_boosts_eligibility_token_mining_id + // ), + // Some( + // MiningSpeedBoostEligibilityTokenMiningEligibilityResult { + // eligibility_token_mining_calculated_eligibility: 1.1 + // // to determine eligibility for proportion (incase user hardware is not online around during the + // whole lock period) eligibility_token_mining_token_locked_percentage: 0.7, // i.e. 70% + // // eligibility_token_mining_date_audited: 123, + // // eligibility_token_mining_auditor_account_id: 123 + // } + // ) + // )) + + // Override by DAO if necessary + assert_ok!(MiningEligibilityTokenTestModule::set_mining_eligibility_token_eligibility_result( + Origin::signed(0), + 0, // mining_setting_token_id + 0, // mining_eligibility_token_id + Some(1), // mining_token_calculated_eligibility + Some(1), /* mining_token_locked_percentage + * 123, // mining_token_block_audited + * 123, // mining_token_auditor_account_id + * Some({ + * MiningEligibilityTokenResult { + * token_calculated_eligibility: 1, // i.e. 1.1 + * // to determine eligibility for proportion (incase user hardware is not online + * around during the whole lock period) + * token_locked_percentage: 1, // i.e. 0.7 for 70% + * // token_block_audited: 123, + * // token_auditor_account_id: 123 + * } + * }), */ + )); + assert_ok!(MiningEligibilityTokenTestModule::assign_eligibility_to_configuration(Origin::signed(0), 0, 0)); + + // Verify Storage + assert_eq!(MiningEligibilityTokenTestModule::mining_eligibility_token_count(), 1); + assert!(MiningEligibilityTokenTestModule::mining_eligibility_token(0).is_some()); + assert_eq!(MiningEligibilityTokenTestModule::mining_eligibility_token_owner(0), Some(0)); + assert_eq!( + MiningEligibilityTokenTestModule::mining_eligibility_token_eligibility_results((0, 0)), + Some(MiningEligibilityTokenResult { + token_calculated_eligibility: 1, + // to determine eligibility for proportion (incase user hardware is not online around during the + // whole lock period) + token_locked_percentage: 1, /* i.e. 70% + * token_block_audited: 123, + * token_auditor_account_id: 123 */ + }) + ); + + // Create Mining Speed Boost Lodgements Token Mining + + // Call Functions + assert_ok!(MiningClaimsTokenTestModule::create(Origin::signed(0))); + assert_ok!(MiningClaimsTokenTestModule::assign_claim_to_configuration(Origin::signed(0), 0, 0)); + assert_ok!(MiningClaimsTokenTestModule::claim( + Origin::signed(0), + 0, // mining_setting_token_id + 0, // mining_eligibility_token_id + 0, // mining_claims_token_id + )); + // Override by DAO if necessary + assert_ok!(MiningClaimsTokenTestModule::set_mining_claims_token_claims_result( + Origin::signed(0), + 0, // mining_setting_token_id + 0, // mining_eligibility_token_id + 0, // mining_claims_token_id + Some(1), // token_claim_amount + Some(34567), // token_claim_block_redeemed + )); + + // Verify Storage + assert_eq!(MiningClaimsTokenTestModule::mining_claims_token_count(), 1); + assert!(MiningClaimsTokenTestModule::mining_claims_token(0).is_some()); + assert_eq!(MiningClaimsTokenTestModule::mining_claims_token_owner(0), Some(0)); + assert_eq!( + MiningClaimsTokenTestModule::mining_claims_token_claims_results((0, 0)), + Some(MiningClaimsTokenClaimResult { + token_claim_amount: 1, + token_claim_block_redeemed: 34567, + }) + ); + }); + } +} diff --git a/runtime/tests/cli_integration_tests_roaming.rs b/runtime/tests/cli_integration_tests_roaming.rs new file mode 100755 index 00000000..5c363d51 --- /dev/null +++ b/runtime/tests/cli_integration_tests_roaming.rs @@ -0,0 +1,628 @@ +// extern crate env as env; +extern crate roaming_accounting_policies as accounting_policies; +extern crate roaming_agreement_policies as agreement_policies; +extern crate roaming_billing_policies as billing_policies; +extern crate roaming_charging_policies as charging_policies; +extern crate roaming_device_profiles as device_profiles; +extern crate roaming_devices as devices; +extern crate roaming_network_profiles as network_profiles; +extern crate roaming_network_servers as network_servers; +extern crate roaming_networks as networks; +extern crate roaming_operators as operators; +extern crate roaming_organizations as organizations; +extern crate roaming_routing_profiles as routing_profiles; +extern crate roaming_service_profiles as service_profiles; + +#[cfg(test)] +mod tests { + use frame_support::{ + assert_ok, + parameter_types, + traits::{ConstU8, ConstU16, ConstU32, ConstU64, ConstU128}, + weights::{IdentityFee, Weight}, + }; + use sp_core::H256; + use sp_runtime::{ + testing::Header, + traits::{ + BlakeTwo256, + IdentityLookup, + }, + }; + pub use pallet_transaction_payment::{ + CurrencyAdapter, + }; + // Import Config for each runtime module being tested + use roaming_accounting_policies::{ + Module as RoamingAccountingPolicyModule, + RoamingAccountingPolicySetting, + Config as RoamingAccountingPolicyConfig, + }; + use roaming_agreement_policies::{ + Module as RoamingAgreementPolicyModule, + RoamingAgreementPolicySetting, + Config as RoamingAgreementPolicyConfig, + }; + use roaming_billing_policies::{ + Module as RoamingBillingPolicyModule, + RoamingBillingPolicySetting, + Config as RoamingBillingPolicyConfig, + }; + use roaming_charging_policies::{ + Module as RoamingChargingPolicyModule, + RoamingChargingPolicySetting, + Config as RoamingChargingPolicyConfig, + }; + use roaming_device_profiles::{ + Module as RoamingDeviceProfileModule, + RoamingDeviceProfileSetting, + Config as RoamingDeviceProfileConfig, + }; + use roaming_devices::{ + Module as RoamingDeviceModule, + Config as RoamingDeviceConfig, + }; + use roaming_network_profiles::{ + Module as RoamingNetworkProfileModule, + Config as RoamingNetworkProfileConfig, + }; + use roaming_network_servers::{ + Module as RoamingNetworkServerModule, + Config as RoamingNetworkServerConfig, + }; + use roaming_networks::{ + Module as RoamingNetworkModule, + Config as RoamingNetworkConfig, + }; + use roaming_operators::{ + Module as RoamingOperatorModule, + Config as RoamingOperatorConfig, + }; + use roaming_organizations::{ + Module as RoamingOrganizationModule, + Config as RoamingOrganizationConfig, + }; + use roaming_routing_profiles::{ + Module as RoamingRoutingProfileModule, + Config as RoamingRoutingProfileConfig, + }; + use roaming_service_profiles::{ + Module as RoamingServiceProfileModule, + Config as RoamingServiceProfileConfig, + }; + + // pub fn origin_of(who: &AccountId) -> ::Origin { + // ::Origin::signed((*who).clone()) + // } + + type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + type Block = frame_system::mocking::MockBlock; + + frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + } + ); + + parameter_types! { + pub const BlockHashCount: u32 = 250; + pub const SS58Prefix: u16 = 33; + } + impl frame_system::Config for Test { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Call = Call; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = u128; // u64 is not enough to hold bytes used to generate bounty account + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; + } + impl pallet_randomness_collective_flip::Config for Test {} + pub const EXISTENTIAL_DEPOSIT_AS_CONST: u64 = 1; + parameter_types! { + pub const ExistentialDeposit: u64 = EXISTENTIAL_DEPOSIT_AS_CONST; + } + impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = ConstU64; + type AccountStore = System; + type WeightInfo = (); + } + impl pallet_transaction_payment::Config for Test { + type FeeMultiplierUpdate = (); + type OnChargeTransaction = CurrencyAdapter; + type TransactionByteFee = (); + type OperationalFeeMultiplier = (); + type WeightToFee = IdentityFee; + } + impl RoamingOperatorConfig for Test { + type Currency = Balances; + type Event = (); + type Randomness = RandomnessCollectiveFlip; + type RoamingOperatorIndex = u64; + } + impl RoamingNetworkConfig for Test { + type Event = (); + type RoamingNetworkIndex = u64; + } + impl RoamingOrganizationConfig for Test { + type Event = (); + type RoamingOrganizationIndex = u64; + } + impl RoamingNetworkServerConfig for Test { + type Event = (); + type RoamingNetworkServerIndex = u64; + } + impl RoamingAgreementPolicyConfig for Test { + type Event = (); + type RoamingAgreementPolicyActivationType = Vec; + type RoamingAgreementPolicyIndex = u64; + } + impl RoamingAccountingPolicyConfig for Test { + type Event = (); + type RoamingAccountingPolicyDownlinkFeeFactor = u32; + type RoamingAccountingPolicyIndex = u64; + type RoamingAccountingPolicyType = Vec; + type RoamingAccountingPolicyUplinkFeeFactor = u32; + } + impl RoamingRoutingProfileConfig for Test { + type Event = (); + type RoamingRoutingProfileAppServer = Vec; + type RoamingRoutingProfileIndex = u64; + } + impl RoamingDeviceConfig for Test { + type Event = (); + type RoamingDeviceIndex = u64; + } + impl RoamingServiceProfileConfig for Test { + type Event = (); + type RoamingServiceProfileDownlinkRate = u32; + type RoamingServiceProfileIndex = u64; + type RoamingServiceProfileUplinkRate = u32; + } + impl RoamingBillingPolicyConfig for Test { + type Event = (); + type RoamingBillingPolicyIndex = u64; + } + impl RoamingChargingPolicyConfig for Test { + type Event = (); + type RoamingChargingPolicyIndex = u64; + } + impl RoamingNetworkProfileConfig for Test { + type Event = (); + type RoamingNetworkProfileIndex = u64; + } + impl RoamingDeviceProfileConfig for Test { + type Event = (); + type RoamingDeviceProfileDevAddr = Vec; + type RoamingDeviceProfileDevEUI = Vec; + type RoamingDeviceProfileIndex = u64; + type RoamingDeviceProfileJoinEUI = Vec; + type RoamingDeviceProfileVendorID = Vec; + } + + pub type RoamingOperatorTestModule = RoamingOperatorModule; + pub type RoamingNetworkTestModule = RoamingNetworkModule; + pub type RoamingOrganizationTestModule = RoamingOrganizationModule; + pub type RoamingNetworkServerTestModule = RoamingNetworkServerModule; + pub type RoamingAgreementPolicyTestModule = RoamingAgreementPolicyModule; + pub type RoamingAccountingPolicyTestModule = RoamingAccountingPolicyModule; + pub type RoamingRoutingProfileTestModule = RoamingRoutingProfileModule; + pub type RoamingDeviceTestModule = RoamingDeviceModule; + pub type RoamingServiceProfileTestModule = RoamingServiceProfileModule; + pub type RoamingBillingPolicyTestModule = RoamingBillingPolicyModule; + pub type RoamingChargingPolicyTestModule = RoamingChargingPolicyModule; + pub type RoamingNetworkProfileTestModule = RoamingNetworkProfileModule; + pub type RoamingDeviceProfileTestModule = RoamingDeviceProfileModule; + + // This function basically just builds a genesis storage key/value store according to + // our desired mockup. + pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(1, 10), (2, 20), (3, 30)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| System::set_block_number(1)); + ext + } + + // Create Users on Data Highway + #[test] + fn setup_users() { + new_test_ext().execute_with(|| { + assert_eq!(Balances::free_balance(1), 10); + assert_eq!(Balances::free_balance(2), 20); + assert_eq!(Balances::free_balance(3), 30); + assert_eq!(Balances::reserved_balance(&1), 0); + // FIXME - why can't I query `total_balance` from the Balances frame + // assert_eq!(Balances::total_balance(&1), 0); + }); + } + + #[test] + fn integration_test() { + new_test_ext().execute_with(|| { + // env::config::set_test_env(); + + // Create Network Operators + // + // Create two network operators with two different admin users + + // Call Functions + assert_ok!(RoamingOperatorTestModule::create(Origin::signed(0))); // MXC + assert_ok!(RoamingOperatorTestModule::create(Origin::signed(1))); // TEX + // FIXME - create a User runtime module that may be an admin, and + // may be assigned to an Operator and an Organization + + // Verify Storage + assert_eq!(RoamingOperatorTestModule::roaming_operators_count(), 2); + assert!(RoamingOperatorTestModule::roaming_operator(0).is_some()); // MXC + assert!(RoamingOperatorTestModule::roaming_operator(1).is_some()); // TEX + assert_eq!(RoamingOperatorTestModule::roaming_operator_owner(0), Some(0)); + assert_eq!(RoamingOperatorTestModule::roaming_operator_price(0), None); + + // Create Networks + // + // Create two networks with the same admin user. + // Assign them to the same network operator, by the owner of that network operator + + // Call Functions + assert!(RoamingNetworkTestModule::exists_roaming_network(0).is_err(), "Roaming network does not exist yet"); + assert!( + RoamingNetworkTestModule::is_roaming_network_owner(0, 1).is_err(), + "Roaming network does not exist yet" + ); + assert_ok!(RoamingNetworkTestModule::create(Origin::signed(0))); + assert_ok!(RoamingNetworkTestModule::create(Origin::signed(1))); + assert!(RoamingNetworkTestModule::exists_roaming_network(0).is_ok()); + assert!(RoamingNetworkTestModule::exists_roaming_network(1).is_ok()); + assert_ok!(RoamingNetworkTestModule::is_roaming_network_owner(0, 0)); + assert_ok!(RoamingNetworkTestModule::is_roaming_network_owner(1, 1)); + // Assign each network to the MXC network operator, by the owner/creator of the MXC network operator + assert_ok!(RoamingNetworkTestModule::assign_network_to_operator(Origin::signed(0), 0, 0)); + assert_ok!(RoamingNetworkTestModule::assign_network_to_operator(Origin::signed(0), 1, 0)); + + // Verify Storage + assert_eq!(RoamingNetworkTestModule::roaming_networks_count(), 2); + assert!(RoamingNetworkTestModule::roaming_network(0).is_some()); + assert!(RoamingNetworkTestModule::roaming_network(1).is_some()); + assert_eq!(RoamingNetworkTestModule::roaming_network_owner(0), Some(0)); + assert_eq!(RoamingNetworkTestModule::roaming_network_price(0), None); + + // Create Organizations + // + // Create three organizations with the same admin user. + + // Call Functions + assert_ok!(RoamingOrganizationTestModule::create(Origin::signed(0))); + assert_ok!(RoamingOrganizationTestModule::create(Origin::signed(1))); + assert_ok!(RoamingOrganizationTestModule::create(Origin::signed(2))); + // FIXME - assign Users to the organizations + + // Verify Storage + assert_eq!(RoamingOrganizationTestModule::roaming_organizations_count(), 3); + + // Create Network Servers + // + // Create a network server with the same admin user. + + // Call Functions + assert_ok!(RoamingNetworkServerTestModule::create(Origin::signed(0))); + assert_ok!(RoamingNetworkServerTestModule::create(Origin::signed(1))); + + // Verify Storage + assert_eq!(RoamingNetworkServerTestModule::roaming_network_servers_count(), 2); + + // Create Roaming Accounting Policy + + // Call Functions + assert_ok!(RoamingAccountingPolicyTestModule::create(Origin::signed(0))); + // Note: This step is optional + assert_ok!(RoamingAccountingPolicyTestModule::assign_accounting_policy_to_network(Origin::signed(0), 0, 0)); + assert_eq!(RoamingAccountingPolicyTestModule::roaming_accounting_policy_owner(0), Some(0)); + assert_ok!(RoamingAccountingPolicyTestModule::set_config( + Origin::signed(0), + 0, // accounting_policy_id + Some(b"subscription".to_vec()), // policy_type + Some(200), // subscription_fee + Some(15), // uplink_fee_factor + Some(10), // downlink_fee_factor + )); + + // Verify Storage + assert_eq!(RoamingAccountingPolicyTestModule::roaming_accounting_policies_count(), 1); + assert_eq!( + RoamingAccountingPolicyTestModule::roaming_accounting_policy_settings(0), + Some(RoamingAccountingPolicySetting { + policy_type: b"subscription".to_vec(), // policy_type + subscription_fee: 200, // subscription_fee + uplink_fee_factor: 15, // uplink_fee_factor + downlink_fee_factor: 10, // downlink_fee_factor + }) + ); + + // Create Roaming Agreement Policy + + // Call Functions + assert_ok!(RoamingAgreementPolicyTestModule::create(Origin::signed(0))); + // Note: This step is optional since it will be assigned to a network when + // a associated with a network (roaming base) profile + assert_ok!(RoamingAgreementPolicyTestModule::assign_agreement_policy_to_network(Origin::signed(0), 0, 0)); + // assert_eq!( + // RoamingAgreementPolicyTestModule::exists_roaming_agreement_policy(0), + // Ok(RoamingAgreementPolicy([0; 16])) + // ); + assert_eq!(RoamingAgreementPolicyTestModule::roaming_agreement_policy_owner(0), Some(0)); + assert_ok!(RoamingAgreementPolicyTestModule::set_config( + Origin::signed(0), + 0, + Some(b"passive".to_vec()), + Some(2019) + )); + + // Verify Storage + assert_eq!(RoamingAgreementPolicyTestModule::roaming_agreement_policies_count(), 1); + assert_eq!( + RoamingAgreementPolicyTestModule::roaming_agreement_policy_settings(0), + Some(RoamingAgreementPolicySetting { + policy_activation_type: b"passive".to_vec(), + policy_expiry_block: 2019, + }) + ); + + // Create Roaming Routing Profile + + // Call Functions + assert_ok!(RoamingRoutingProfileTestModule::create(Origin::signed(0))); + assert_eq!(RoamingRoutingProfileTestModule::roaming_routing_profile_owner(0), Some(0)); + assert_ok!(RoamingRoutingProfileTestModule::set_app_server( + Origin::signed(0), + 0, // routing_profile_id + Some(b"10.0.0.1".to_vec()), // app server + )); + + // Verify Storage + assert_eq!(RoamingRoutingProfileTestModule::roaming_routing_profiles_count(), 1); + assert_eq!( + RoamingRoutingProfileTestModule::roaming_routing_profile_app_server(0), + Some(b"10.0.0.1".to_vec()) + ); + + // Create Service Profile + + // Call Functions + assert_ok!(RoamingServiceProfileTestModule::create(Origin::signed(0))); + assert_eq!(RoamingServiceProfileTestModule::roaming_service_profile_owner(0), Some(0)); + // Note: Optional since it will be assigned to a network when + // a associated with a network (roaming base) profile, but we can override it to apply to specific + // network server this way. + assert_ok!(RoamingServiceProfileTestModule::assign_service_profile_to_network_server( + Origin::signed(0), + 0, + 0 + )); + assert_ok!(RoamingServiceProfileTestModule::set_uplink_rate( + Origin::signed(0), + 0, // service_profile_id + Some(10), // uplink_rate + )); + assert_ok!(RoamingServiceProfileTestModule::set_downlink_rate( + Origin::signed(0), + 0, // service_profile_id + Some(5), // downlink_rate + )); + + // Verify Storage + assert_eq!(RoamingServiceProfileTestModule::roaming_service_profiles_count(), 1); + assert_eq!(RoamingServiceProfileTestModule::roaming_service_profile_uplink_rate(0), Some(10)); + assert_eq!(RoamingServiceProfileTestModule::roaming_service_profile_downlink_rate(0), Some(5)); + + // Create Billing Policy + + // Call Functions + assert_ok!(RoamingBillingPolicyTestModule::create(Origin::signed(0))); + // Note: This step is optional since it will be assigned to a network and operator when + // associated with a network (roaming base) profile + // assert_ok!( + // RoamingBillingPolicyTestModule::assign_billing_policy_to_operator( + // Origin::signed(0), + // 0, + // 0 + // ) + // ); + // Note: This step is optional since it will be assigned to a network and operator when + // associated with a network (roaming base) profile + // assert_ok!( + // RoamingBillingPolicyTestModule::assign_billing_policy_to_network( + // Origin::signed(0), + // 0, + // 0 + // ) + // ); + assert_eq!(RoamingBillingPolicyTestModule::roaming_billing_policy_owner(0), Some(0)); + assert_ok!(RoamingBillingPolicyTestModule::set_config( + Origin::signed(0), + 0, + Some(102020), // next_billing_at + Some(30) // frequency_in_days + )); + + // Verify Storage + assert_eq!(RoamingBillingPolicyTestModule::roaming_billing_policies_count(), 1); + assert_eq!( + RoamingBillingPolicyTestModule::roaming_billing_policy_settings(0), + Some(RoamingBillingPolicySetting { + policy_next_billing_at_block: 102020, + policy_frequency_in_blocks: 30, + }) + ); + + // Create Charging Policy + + // Call Functions + assert_ok!(RoamingChargingPolicyTestModule::create(Origin::signed(0))); + // Note: This step is optional since it will be assigned to a network and operator when + // associated with a network (roaming base) profile + // assert_ok!( + // RoamingChargingPolicyTestModule::assign_charging_policy_to_operator( + // Origin::signed(0), + // 0, + // 0 + // ) + // ); + // Note: This step is optional since it will be assigned to a network and operator when + // associated with a network (roaming base) profile + // assert_ok!( + // RoamingChargingPolicyTestModule::assign_charging_policy_to_network( + // Origin::signed(0), + // 0, + // 0 + // ) + // ); + assert_eq!(RoamingChargingPolicyTestModule::roaming_charging_policy_owner(0), Some(0)); + assert_ok!(RoamingChargingPolicyTestModule::set_config( + Origin::signed(0), + 0, + Some(102020), // next_charging_at + Some(7) // frequency_in_days + )); + + // Verify Storage + assert_eq!(RoamingChargingPolicyTestModule::roaming_charging_policies_count(), 1); + assert_eq!( + RoamingChargingPolicyTestModule::roaming_charging_policy_settings(0), + Some(RoamingChargingPolicySetting { + policy_next_charging_at_block: 102020, + policy_delay_after_billing_in_blocks: 7, + }) + ); + + // TODO - add Dispute Policy + + // TODO - add Adjustment Policy + + // Create Network Profiles + + // Call Functions + assert_ok!(RoamingNetworkProfileTestModule::create(Origin::signed(0))); + assert_ok!(RoamingNetworkProfileTestModule::create(Origin::signed(0))); + assert_ok!(RoamingNetworkProfileTestModule::create(Origin::signed(1))); + assert_eq!(RoamingNetworkProfileTestModule::roaming_network_profile_owner(0), Some(0)); + assert_eq!(RoamingNetworkProfileTestModule::roaming_network_profile_owner(1), Some(0)); + assert_eq!(RoamingNetworkProfileTestModule::roaming_network_profile_owner(2), Some(1)); + assert_ok!(RoamingNetworkProfileTestModule::assign_network_profile_to_network(Origin::signed(0), 0, 0)); + assert_ok!(RoamingNetworkProfileTestModule::assign_network_profile_to_operator(Origin::signed(0), 0, 0)); + assert_ok!(RoamingNetworkProfileTestModule::assign_network_profile_to_network(Origin::signed(0), 1, 0)); + assert_ok!(RoamingNetworkProfileTestModule::assign_network_profile_to_operator(Origin::signed(0), 1, 0)); + assert_ok!(RoamingNetworkProfileTestModule::assign_network_profile_to_network(Origin::signed(1), 2, 1)); + assert_ok!(RoamingNetworkProfileTestModule::assign_network_profile_to_operator(Origin::signed(0), 2, 0)); + assert_ok!(RoamingNetworkProfileTestModule::set_device_access_allowed(Origin::signed(0), 0, true)); + assert_ok!(RoamingNetworkProfileTestModule::set_device_access_allowed(Origin::signed(0), 1, true)); + assert_ok!(RoamingNetworkProfileTestModule::set_device_access_allowed(Origin::signed(1), 2, false)); + // If we know the whitelisted network then we know the whitelisted operator too + // Network Profile 0 - Whitelist MXC + assert_ok!(RoamingNetworkProfileTestModule::add_whitelisted_network( + Origin::signed(0), + 0, // network_profile_id + 0, // network_id + )); + // assert_ok!( + // RoamingNetworkProfileTestModule::add_whitelisted_network( + // Origin::signed(0), + // 0, // network_profile_id + // 0, // operator_id + // ) + // ); + // Network Profile 2 - Whitelist TEX (Any of its networks) + // assert_ok!( + // RoamingNetworkProfileTestModule::add_whitelisted_operator( + // Origin::signed(0), + // 1, // network_profile_id + // 1, // operator_id + // // FIXME - add all the policies and profiles that will be associated with this whitelisting + // ) + // ); + + // Verify Storage + assert_eq!(RoamingNetworkProfileTestModule::roaming_network_profiles_count(), 3); + assert_eq!( + RoamingNetworkProfileTestModule::roaming_network_profile_whitelisted_networks(0), + Some([0].to_vec()) + ); + // TODO - validate whitelisted operators + + // FIXME - we need to rethink storage of whitelisted networks and operator, storing together would + // work better since network id may not be unique across different operators. + + // Create Device + + // Call Functions + assert_ok!(RoamingDeviceTestModule::create(Origin::signed(0))); + assert_eq!(RoamingDeviceTestModule::roaming_device_owner(0), Some(0)); + assert_ok!(RoamingDeviceTestModule::assign_device_to_organization(Origin::signed(2), 0, 2)); + assert_ok!(RoamingDeviceTestModule::assign_device_to_network_server(Origin::signed(1), 0, 1)); + + // Verify Storage + assert_eq!(RoamingDeviceTestModule::roaming_devices_count(), 1); + + // Create Device Profile + + // Call Functions + assert_ok!(RoamingDeviceProfileTestModule::create(Origin::signed(0))); + assert_ok!(RoamingDeviceProfileTestModule::assign_device_profile_to_device(Origin::signed(0), 0, 0)); + assert_eq!(RoamingDeviceProfileTestModule::roaming_device_profile_owner(0), Some(0)); + assert_ok!(RoamingDeviceProfileTestModule::set_config( + Origin::signed(0), + 0, + Some(b"1234".to_vec()), // device_profile_devaddr + Some(b"5678".to_vec()), // device_profile_deveui + Some(b"6789".to_vec()), // device_profile_joineui + Some(b"1000".to_vec()), // device_profile_vendorid + )); + + // Verify Storage + assert_eq!(RoamingDeviceProfileTestModule::roaming_device_profiles_count(), 1); + assert_eq!( + RoamingDeviceProfileTestModule::roaming_device_profile_settings(0), + Some(RoamingDeviceProfileSetting { + device_profile_devaddr: b"1234".to_vec(), + device_profile_deveui: b"5678".to_vec(), + device_profile_joineui: b"6789".to_vec(), + device_profile_vendorid: b"1000".to_vec(), + }) + ); + }); + } +}

    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 z zh;Msf(7zln{v=_TUJ&vYrFX$4$VwaaClG>QGP&uwLv6#K52! zmFC5@u~7^Xyf~|dLNWOA;u_8<2ESfhLob5{0zj@ILuJ4r>!L)E$^fEON3P0%K(i|( zm6Gj!JNhL&x_Ouc^{p%>!HKOvmhn!S)6b_sydE`p-(9dqtbsJ) zWf&E_PgU?f8Q={gb?g*OWzezGF=#=CLCJb*^uZTU|GvcOXH?1`(hi(o>VX)*$(JCx zEvCg|G{iA?O|(2YqC4u}Z>3~Y<~Oi4uaCZbsjD=bTIlzF{L)fwP7jCjU~K5`D1BB% z@*0Dwyrg)=j0Hm-PigK@TPz{$Y*8|@T8kzhJRZGoNh3d=;*MZ{E!GV3#2>wuJsm^A z=-NEbPwq-;Miy;clKq*K);Axd+6oOwgyG zI-bgblt==6RM?msf*j~5RVYO#G1VIz=oEM;#ZuT{{B0gLn{ZP^?_G>ygY(E&6b zAGW=Aqv`(CX(}>7)6qw^2;jr11(;`D8Ez%@q`I<#Xwq#m%ZygGv?@qs%f&z$NrJJA zkw#8*rtU%-97P3!01a!#NCo4m^qzFg@tA^zvqcv{F*IhXCFAyI5X7I6sUPDBfjkV< z*d5nCa;&y2d@<1v?g?jre>~37}ul4QY zsSo1-?;b=^ln@3ka%zJ2Zli#s;k4}ED70A<_nBD^Fy=|N`ii;1_V6T3P!x{eC{uFb z?z&ZMobSkG7AeR50OH{CXGbGkw=>2&kuNC{Ey*S=*O6GNt|KL8FwN+%q$68(9cc>- zWt3(4c<=5lg^o<5BYFK=RHC&KcJ_way=0!`^YG}%7MC`=48`OQFzRnP;BV-IM1UE_ zWZ-y0kqDQlzY|a-8Iv{fX&k*gbE(8Fz*A9+yEIsI*XWoQ1iF z3h>-`#P8E7`jTJCJ&!KVw~QAx;wjZx%Fj{9O~r$gr8@ITX&x^B>>{(w4LZ7zA5nz~>=I$VEQOi%{IKy6va&_8V%qrWbbP7Mv#&LN z9^aDPScmeciwKBvwg@ZVKya49Ois%|O3V*^Ng*;BUt~Z!guzl2o+nYbv?&QLmXoDy zQ#GEB;;(3$A#CEO1Za~DL7K-zVT(^G@ErT$9FvmdE1-+KE-GS5*(jYqgq1fkr95C$ z%JF2(hbuV@$y_cNqim!0*%=?|!0yoqyqL{1hr;O`Z_^V$nP5# zHOJPckiW7igkHg+z*HmzfNoEBX|-ZkY!dV%B-+Q63A%q_T1aA%8_EE2m|} zx`wiHX4WZM%2+_uimnMowKr+ptJQkY>d9U$7buoCh_W4pO>f5_J7Ixm?JfTBbo9GRdSjPuCGJK!DTL1_Cy~IK|Hkut zVxr!PIXH3A5^WRarIy+5*nM~N%;qIq0fc#}t$C>}=h!aM+*FRiAO(?@x`#n}Df1Bw zVoEa6TyzZM zmT8@aLcrLdY%_`#!0lb#NA{*l9SJ)`x)P zTF1}Bny18gF|C9bt`@V?oW`k0gTeffeQVW`eR<32My7Y?jm+PC=0^5MX`%o!k;wnq zX3qpS384~sOD-62u9SSuUurW3zTdaQ{Z5HDfS;hQfevo9V&)RkM`j=Qm zsTX}N@=|{6_%>hD=>aQ2`IaK#$VU`_H+0_bxg=dJAy8J~XA)^{ zjv1bXZK!Ch89@bx0CXhM<{oT|0XzF9Jf1AjM$Mi%6lEmZ*+ZeQj&mG{Vl2+F36H2c zCtMW4a>nXshtBS~52SbQP4v&biG_1-VsP$F49~rZ#dB|B>D-%GKKCX@=ibDIb8lkf zxi_)t+?&{3Z^EO`O!aBgZerdaSxKgVZ66Oa$kZ+_$BTHCd4i{GHOtl_9I-cUqc{}4 zlO=oeu18cc_tmEyHQ{TUUZuua54Uk_oTKWx`0Ph>$+K@XTk4}ZJ1u%CO$-LV-AjA7 zrnjUrQI7eiqaYh@t9W!6XF3!kgW@%lG;hn%Z!1u`^OfLBL{Uu!T98-4^svTBNF0y>}%s+$mE&21Xa(#w!S^(TfBe`+GfwAc|`eB2~03%=-KZAp~BA z8QqtIz(Wwc3_n6&zL|O%%hEne%SPFX%2t|XEb{yEwbkDR34Jh8lx2Opx{+m5UnakU z&Pw<>1Udm`T0wU~@GEfg2=w2ou>PNGSZC;j>tj{2oFm&3*?#5t8=V+w-Tpw#_HXhU zTHw66d9-*ca^MBRUt|86Bichz1$hQ=7HC18=?$GlaE}h<@7SvLdfG@fE+Py_?-br2 z!U=dhBAOs3ng`BeyRYOdZMVQB&|@jt1sis+gs+lVxkDGVIu>bq`TrG|s+-%Qm&l_i z9xvzdnA~{@Y(QVcohA8Ub9>fDaF`LSWGtj5{-`tA>ZM16*?${%5|uoD^CW&@6umf# zu|I8xHQ56!{+bdiKIsL0q8Ecc;qWB5Z0eJRIr?N_jy_qKqfZv*=#zyx z`eb2_K3S;ilZ8^BbUa#3s?hiEo-3fo72C2u ze@f*}xyLM$8V5?M(9&d=oCf$#^7dQu&2J_KfgKEOQ&1XqFtA1VM2OtPJ)IR1dD+4= z=w-a%t(P_*QU!-dY7P-vRS+BIY0ozG@e;P*f(yk9QuWFu4%HBkZz1b4UA+RKwX}@) zMUl;t>qxr*u%zOa%X_SrS}1%6<-)yNEYuHC@HWr1Q8K{U&2Pk-3fb{(e}qVJJKEE) z0c59!^tPQEssqGcg@M%D87b7TFR-j4!6QNrV!_^p1#aE>$n5XD%!?af??ciUdJNK_ygF0qJ z`x&ux(AE5FR-uMDdwyofV+@A4FDD#=bgy8^)Fsm3>)t8&y1~#L4be`Yq`6xttBn{0 zRvd0)^X%%z=mCqwR#1&`orci~B7(2%NL+{oht;(!6xNLu?^^!^pjcLM1zSnOuH@ zZ;_`T&C|Md;g;A|M{Es4D=M>HxSM(R-g*)b$;I_87YuqlZ>Z0zlz` z#6G{V`_^%b|Js@-)0~_x7-7;t`9Z&A5u`xG`eo9-(lGswHCM~UBpk( z4r>^#bTzxs7Al95ZDQ0%{`!UuZ2=60*(QGANkR1bH_4OM2LzzK-P$Ki9Fm zna@;*ejKiVrLu)=u$yxzyW`hvoeVP05ZthJJeXy)A&jP@Duyxao07>0z>)f%SYe&d8Yj5{7pA8;expWb10Y3@$*)GXIgF++ke?3H(=Ye6G-L;H8ZX zq1{LeL1>9i_0|Y$QfSj@TN}~ZrbcUixAGCN)O66r* zv1PHonaxi8YnV3qxgNv7nNKo6{G7o$*{mCNC2ke4YZ*FclEy;;YfTL^YlJM@I!e>s zsu|as+mwy64cW#z#B(tz^p6^256}rVHbP~Bbhbh|iwxcBUjq?m{A;5uki!x{{#IlC z#TyvM=&dS%M<^QJK;0pN(E&}yM6`H%`bt*pTv*9FqC%kWP~wKry_Keh-VGOTov?CH zZwvOvx*RW1lORsyks;FNl4EE0t%C4o2l;xeLV&(G>%jB?dwm7*t!syPRcM#!SJ2)J zv`aS&NIJBhh=UxeJL@%m$Ya{r(rZ zIwYk}G}j$c_{aW0MW*{Dx=(VeXs#z)mW|3bPwUyJ-u?)xwUz%o`J(d8bF)!NG3HyO ze49CRh_g|qsdv$UXPV-t*Qn^BPiV?K+MewD;%gP3VkaWGed>{L%k>j}J(ZM-^f)<3 zFw1V4C=`Q>z5c*&zFbYkOe6VhzN+pDmbNlP@v^csVX6yKYs#|j^th&|#n0m(67UgM zOsJaVELl+x+mXrCy6^-g)}~uEu?{L`%9f-4&D)eeMl-nHKdd9D%nJtCuc_=iM^7vI z!SbB!SHX9U{+LQKDyIo%Q!`lHZwIvqoxx#eZ3zq&txZYgQ56~-BBa5K7o|SwE~X5#4P<~LpI8Z#}T*7E!f}^Tx&9i z|NJ+duq{s4L+VBq*phRT5P0fU7!1{!f9|*Z)lU9pd$kS?ZZvsiW}v~*+7*XQL(_jL z(K7w~6Cd{``}st`)LUG5DPI;?m~CR}sqw?}^h8BnUe>dIYqQ2WeX!kV6 zmh_=)PF+mHxU6rsEa(4J60w{=c*H>k#ur5#1Bwf=IIL|2{G)f(%I;Jd{+@&U=HGdB za)*AuZY>by9Ou6T6Yu9@_nq&2>~p{H)q{U_)6R6C9uTYZ6b|LxkN(})9)IVTKK#y~ zB@fRNDhM*jkq8a|U!6S8ZwSaYfC$Jh>l{-Zg7hD*l|7^~j;I{rSDk!Jzjqrz59soj z0q8z1cHepAU0?dh(f{_R576=9P#HDaga~80>lYO5tJUFXc&ww` zPx4!ggk$0+#3%X9iPwHyzkh7hJE2P@@;c5%J(JflJplTnDzBsHhzbIV9^hK>!1t>% zjofFyFNzM=>KsxXhKx@;-o0Noyk-d%BGd=?%`ag@`n|^>+OJDGzGUZztk_Jm^5VXDUi_YA`7d@>%T{;z^GpHXajMCd3;kv{=`l_T;`e&(}xyz4LC|2I$D0Y$r%+vD@B<*O58A2FJC+1JStHfSsB0dL4U=d1f<3FF&; zqkwTO`QWBNyvRXZ1wM=&2_J(v<9vFz-z%tu!#^)^$XPk1E~_W}Bwp>5C^YzaHdyKPEZ3^ptXPV!oVwKiqt`@%8Jt0%g}tWp%uk;tTS0{^aR_l3&k4p6vXKg{;hz z_jQq{pD*D%3wgTu^eV}0e<_5s6a2rurx5(#J{LflQCT6#bY`uQ;nU#fta29KR_f$x zsj>E?g$U`~q=ldF#+DXY``YdVKF$`sCh&ZtroYntr(%xDw9I1iwPo=v!&kabo9tHegC+lVz0`8Sk~p4&NHNn$f#|LrJ<;{b5<0=vc=|_ zihSEGUCB8iiYJEcB;P>z#tpWamH!nM!);)nE{KJ=I@yP1=vD4vFm^8YFc(IVgWtG; z^ehEt3Lp2!AlSoy^10|HO0~e7hG<-H4ld>!Or4OR0d^ z+s2xuRIulz)GPN7uhj05;sg-OSCC+x*b4VJiy89h=PrX*Y$+X)-b)&C^BSIG>vbH%7#TS$NC2X)`_5$j2PB! zXUnkuk{Z^%mj>b~vdYdu@}DePLz6Ri`!YWD9guC(k@TJ!q4ZU^P8`n6E} zqE*yF5qkleHhc|RD8`pD=VJo-s5Y|T&Bazr$AUZqzMp<_Q^02a=t_e2S`i6ZZN9Q|PiS|opP6qg#Jufid=xQ3oQ;K; zqs~De5J5aCb>*lf91sAb#AYHMg#aBTIkZH+YLIuPvYc*@ES0b6Usi5~vNV;ToX@2) zMI|aHbhvlu)U@}iU>uUm(|K{UhyFusJJv}ZaKT!OYFCaXG!(&@;bqH~=ff8wCe7ii zs5S(1mdfbS@FB5=FPDEAp9JBX!za!l%Ewa~Ljx8ZMM{~Nu&aTf7Ky2ux3%Bf5#e@?`|zu=jGCU!Og+Wz6OzR!f~{Lbu!%=P!#aVV z(pu3_Gh1w(4Xh^?H;ND|KX4C#z`$%4zD z6>98!@Df|m_`Zqrw=<{D30@KpoSv6lrOdK{!hh{l>~Hpy&aG`_0N&@PYO1-fd1Vut zq?fdcwv0lp`jHF^H}a1kh(lX8V=`g3O_gi@&LzT31amJE%B1vSmx$ZAs& zu);r{iOd$Ce#k)anbdHTmo=J~B3w$M=O%7h%DPbs*sWZZ>I6MYh#PA|h&A~UITG3Y z3{-R*^Hs?j01`coC+1~>R{VntT8Bnjz45gL3-_`cKDA)cUb<1(@s0k428?SKiK;D4 z%whi;0E|UJ^x9Ev^r|shuO))81F0n-Sn8w9=OLXHB)TPmBZT}UjxazHg2doxk3iqS z#;oBii?z7AYUDX0Zj`yNRbKJ~%5rOY4&%{hM_KP~{3eWK%ft@Q=p4+7=|w8BNlzr0 z_=o22Brsl!wKgk#c5u1gjPBI3uYA}ec}ww7r@c9QBAX~8g0MI*0;D0x8=P5Oo}w+$ zqJ}+=o?u|=4W?oI3%cTXia7!;Q-NznNpMdYW2883jo9)l_TZ&Vm1ZGwdK1}S=fLw% z3VE6eTD-1Fi|=2J7Dw!zKn$ZUsNdxTkp!@S)l6j+xz;EGLJNvqBc$`$@?yyHSt2X? zgWINXw+wZ}VI|>!9GJ1(_K~; zrPWmrA22C3l5~}YpPE>pt1SA|ZYpUjG*r+_>gNBb4Xtk-K?gI6W0+1gez*i=LC;Gq z1QPpAE#&9wX0(uJ@2P7cW{RMNJ~1L6A&hBSXsBa1l@?lbEku4P*Fyh3XrWfAXlh!> zAD&7J`Kc0dz6BYx0IqX>kcQK0A+0cAWn^HXp@rI~&_e5vZr3!9?-@%LoC79Ovd@py}%D{ED5OFP0|s-#k8VOA|U5td*Gq7|nz8Ya6|+ z0WH(e0A^II>@h2iq@4C~3XRU}t~zG4sLRgre1Assqo2S;;^z@UF!*_tG@$lVp8a3z z5P)4n;ADyHB4DRgr;Hm(HL42sE$0fmfChE}4eSo|VDP(L4zJlF;6TehjKFO4L{y&d z@WhQ6+u?vmk;rip&Ujd^V(b!g(_7B?V|FIja+ZeDoZ#H@bVesX%3XEfgG`p(+Yt?p zBftgN`Sn^6?=adq;Mhq&P!jnL&#OI!+Q=+o#sb(;k*txOk+7i_;#R0NV)y zVbu!ZaGm0`2jOs?{6uO7|4p(;89#T$`3_LUU2(pH9=I#ccUZ#VY$5Dkb!_u2oc6FB z&pI+~Bdkt)bgqoZv1s3tU`)0VWmaCk??cD_7_(>Jkz{lq&Ja`6D4^b?x0J?F#8#r7 zDc=%i6t7G;hM}VvH*6)+dYBFPUA%4)U+ulz$M^D(ZeF>S!wpNsrt^E9MFHdgAWA#U zlHG9#(T)hwUe0vdA-$f4l7GE*5_t&w;y$9pyV=s+KX@-+YGCHRe(NNh$bk0N&@i*Q zUP{AOF0%*#?fl2JH}fh>sq1vyf<~@?^Mu&_L{&L?qBwpzEC?u*m(`Cda{hxLQ=R+h zXbnMD{^}lrsuNDTdmom!xOek}{QjH}Q6C(Hus(L<*DG3CvA4FT*U(>CPD2I;)<9^C z!2~B*FxL7h8O)IYCVjMbAJqr;pYchSh4ml z@4q%jXraMY5v3)NfG)=0`bEAofPZ-{fTE& zJmOo2K5ZH2#9GMPUe7A#u#6cqhS?TFWwVB*L`U+&+D<7MwRZ4?jF?Wb?uMiHT0+Jh z6U7@tPnMQf>4V7ZL28d6k-erVWAvf#QvH$F^Bq0g-ou1aRhbEL`CAeI@4JG+d{`u5 zl@X3#L7-|BMGA#>IPJ^;IPXkbI@I9<5co&5@i+Kj*zTK)n!-0>>kh2&d28-stvwez zMQX-r?3}cujyoLlb?mS~IS)I&8wdLdk!*enJ5)VAcA#$<1ha7sPjYkIY-W4#vuLsw z0zu(Q1jgqg>(>JxRof$S$%1+gHNghOgl|@ldvAPCgovs#XyoT{0i))T%lLFo%rm|#K915|%;)jwQ`$WveKfC;GlGrA?WwoTvwX<*h2N2!B{Re68e;?Xd9)%FTR8j1~tp*{1niqXu$_RAO9{*u13 ztUdgp?crB~cxG2J4%R5Pd{lvN2!>R3ON6%bC2M)1p68H(Lti6|h+QWE0NXq!z?*{r zA8w0Bc_hZWr%e)jK0_te+s|*lpX&VW7h=4>Ui;nDej4w*YClza>6`kZ>~A>w6BCKU zW_g=8hXvnZnviI-1~Awh;bK!hUmfrS2O8TY@~lgd}2Fp6mF01WA98Q z5}*8|#YZlM0!N0oGy2-)tx8V2Mar_G!e#4^6=U*KVFeUS zV`Yo5BGn#vWk(Y$SDgo}uoA4WveLxL3)UYiwncU-tbl@PtXv|jV0Xl$eU`=Jn!AM- z?H0*FVVphsGkxHJ`R%azMMYa@Tb{y=vIh&ch1H#HL;9W?+v3EryhVD$!)#nW@{jXf zK6Eurn22;RO37Ut03BW|_%P#2vR!LrBmOHh5r0)6+kJ6O#P8?)!r6*AL!H)3nxbM` z%1qLr@>3SeW9&-H#1xOd29(=VVCd}b>*IAn*nyJavL3MgIZo?gO$T=|mV-u03m-A{ zGhYRKuySQe1qi({jhhPiP&*(}IGQHwMM9enKNsA7U6b3dUlX?j6wOqc@u^-7$xru4 z439@kn(<&;s{f1-N2>tmh}+*U5LYNj@0Nk$ix23dqZdU_NEL&)!*ndbXyS>>#hd#% zLnYM6A|r8rzf`%J^<3BfJ45tAV_Fp!OnVTl{+Qak-;}Yq`dC3Ri()g8+F!^0dkWms zBd#=O>__aSiW($auINImqm$1k+p_$>N`jN-x71vciOso~s4*WcVS-*{9>$T+C%dRP z<(X8_CHZ{l)y4Dh2-K4>?*39d#diw=tCG-|K?pOjQ2b#Km66YrAN!OyKX@&Y?J-jf z^&)@QnRj~}dD%v_cO>5P!Z>=dRYK*Ptd^tH;4J@o$#gd@nk)15CMhg?%Lh05gCCGb z)B;xvHhrBx`2MkAQ_4|(w3lf{o%lX@>1`JTgLMGglDAkBN;ygs zI=Dy^s_v3PzH44o9B0w<{#X*ihsj7L%_BVW<)eM!(QUE8OUzIC=tumeo2@e?Cp`_k zoI0P@8PXUk6)~NWjv6B|8vGj1udgYLp8m8N6jw@VO6u+~Hg8MZrgPr;Asfj)5*-Ua z+tWkw-NF#8KxP=89|+G?bRfPPF)A9e_w~&@^F=A?DLo)yVIL4`7z2>gEg;nlGi5d< zPk2#giMh>Kvwc&$Vuv!k!9HEMvi&T3$~I0YGry;m*$#_c*$#_c*%HdGfH=t!Y>XdW z9UE#*^re_cQ-+K|j=NloA6faV&tnO{Mr|pr?=&O zmv_dN_vPlg+w#rTt*KN;-1}_t|E#g)i|lKS70$NN`eVgx`2s65w*0zd<=kxfA|jxH zm8;GJR#qfp1y*Kk`E|$2x!Lk>o3iCK&APGh)o0R{Z?9_0JK1Jzd1vNzw&mBXnra69 zU!p0^pl_dnL9gM0=<{vRJMLx-`n4#6voPq-40~>pJNB^Z1NI6-6y#7rRz0U9+{CV| zdazfs>i_E0R=qago>f-8X8I5VCi`9vxK;hEjNVNA>K*$43Q25mqBjDlv_+s{Dulvp zPZ#1}IxCBxkeC?DO5XzD=j<$gljyk?zjNgri{BrV7QZ$Dn*l_&Mp)hA54+`aEdD|p zmll7@xGIaEb?GV=zk@W_;`c{2i(l}%#qWqi@hVuU zd$-Y<6_@?JVEwUDS;ebhrS9PlSgAbR^Q>Znc2ro!$1J#4 zMx3)PPvPadhZ|ORwyiwe1t{j>K4k92riU9(ZQa9dDs--g+sWouF%7whzbc6Mq58Je zUF<2Ht%#!yE6c;9QBS3s%qli$Mm~W7NYg6zF&7ryw3}PQ1)*Oy9W-ALd_i`JN94qe?vRyG$($fH}Ty{J<3f%B@ByV!m#X`;@+JS`EJL2ByxRRqWjP%Vrg?B!}Ah zf3N(cVSh>B9`;<)r3I6*RbE-cm7~7y!ghwbV9*xfs)Ye=2CZYf&S`6C2L^T)ox4%J)yapHcp+&i{|9Epf++rQ<(en~+A*!QNWQ=;e)Os2i zW{ft&Ez16eqn|ey?X$)hEk3v-XJiRw5pJ=bSTSR?z>2$Q%lzN@ z3!is9Y5*9T;TD>BP8)71Pe2>7G^Qu%yfR4V`ln;(r@~YGE$-` z?x!>}A8kfTph_ENW{4n}@tacbA6=xxw3+#9o9&bLRX~A4po`Dcr@OG?bvBIE>4HT_ zYYp7|m$jA_l~u+=beD#UOGWH59zP--q*t^*(rN@!t4LwTIt#y+Kx#sNYJt>1Wl^?m zMRSbX=}ahf+d`?^{v9WR^FvU!r8A$*24yd@UOd))eHoPf@DgAh>v~Z3eLvzs*-L|S z8<-nX(-Gq5cVNS{3~ccn2j;fWGdnPa37wW=LyJGs;W{lwJ-Fs9IMTd*L>|^y@OFJV zUeW$@4-T9azw;F|Tt4z!NLprjR3kp^!2w1bhN^Emo?iUqqbUy#xGa_j2YTa(wyc@6 zIygYCjB`S}`vljMt-viCspg|Zr_FMOTxe4ty0?R#gih&nMomu<1!!BTZG0SG8CWim zb6_wJG+oz`at>3+F^O^0NR_VVtoh%gmUY7NEAZgym1&QDPb-@Jvt-nObxj(9Q3;#1 zv!u?bjY+0{yu}&aGgJDcWHV1_LJyYDVjcq698p9yG-mP?o%j$=lvKu6Zf3LK3O-ZdnSDBfwt!1 zE+^RiL=ZL9ofXt)s{LD)a6|EmjdRk5*fZ+gcI@$V*K{jwTkPjLkJAEl&tjYweJW%_ zLLI>Z)x9$`X=HfX5oH%3zK=-GSfMZIqtJRoLeB_`wprgK+3liX9j&)-tukhn!#JZ} z6x>?|k^aU7yHT+|O;z{lZ&$lf1!9>?>RU>@$-v~n&OkFrkBL?L;k=QC?O9!M<(6<>P} z&P1&%qoq`S#KLJ{r?K4FUPI;s3nXl0KH$3swl-mJ8W+d(YEBcJqz>y|m#hVwYdWG4 z`SLn~C!>6ApqM$>Hi@my6-tA+klpqn8sGp=g%bW&Ih^-Q0F$(HK2?`C#w}n6D=e zH-cF1r!mp1oGRnX9d&@6|^+L|t>F zzJ3xDlhal*Io3Y$0EaCLWn1&HTRy~F|H02jqkm=Av_4H9=W@F84$F-zBi2izM3n!1 z{3es*~quRFBT3731$QiAa#f&_v$EGp1GA zpi-7{`2O`eBRNH_{r3cFaW>zm^#EBY&yHHiU&1mNYPAN#$e@QKKk~xCq1aAvx`J?S zlw^^Nk&}!jm+ofa+U529@zRGykABS&fG&aA^P@`!V!Zq5Di$uI8Afu61L}nQItn4}XS?*@7kVVp73@eiwqiZq2 z3ZRu~p&nBAv+~iLUZ3ifs*b+W{5rmZIN!YAvD#cHTz!Y9$u!HQ*6!fD$Q+|_8R(b^ z)-NlQPh4(gV_WR-GwiLQm-FeDZ!7T#ZvvB7CgPB zey2mVPN&tOS_q_2rfr3L5oHk%&C$C}{tFc=oC_TrD=BlWHj7)YZRy4M9DwOB>Pzv< zAL9NXU6tn zKB$MRd=^x%Z=fC^aBH2gdY_s)9abM$1=QoKfa>)P)T8SM>dCc$`ot=r9!P}kS*&_} z19cxCz*r}&9#T`M!|GuJX;!9=t^%spH&7o~KTwaa1=JI(fXeq2=3>?B8>mmL1E@&< zfwaKrqB4CfE@JSN>OYLBIUEAcaM&Umt=_!4MQ7T_?rPAeS9GSnd{?in9<8>eb3|tr zplCneKmh>Lo{`54HbIf5d{(P)Mp3En!2pa62CYF8V?vGXg*a}?X-2q_`Yy>4s3g>Q zeIt(4cY!tK-Z8A{%Wi&U(U8wEtT|b0m^;P%>=W6nG7;wH={>J+61pA}9|*4|y#;OD zEG)DZngkXhHHig6mIM|dHR)MsZcRc(MXzsRvYPY?0^=Yn$r=dE&?D{V)+F>{-Nly#YLc+zuCgI3+kZ?Rc7beCF6Jv1g!3!58TpGb9 zK2472YWfCcR7v?Ml##oWX3Y&r`8;#O>l>)+;eLYnYj!;arBf;+*$#3&+4lfz=7u!R z2~$!Ard&^jGSZn+Q%1q*tYCPRAdDd(rtW+m{7e!Fm(73fOCJyqBLcu=X!nH=ba5Kt9A|= ztqB980_K<-+wAnu09lk`1#z+MtLU-82Ut_F2ipASF;h0HfEhy!(Pp<@F|!BkNVjd^ zlSE|3+6Nx7&B>QPsus57CmfG2#$ARUg{x@ji(9R1m25 zp{P&m!`=-sAmRjz6Adg;>&0<39X(f%voO%tvA5}+rO=nhni`sjHT99P^T+2~U~d&G z*0jK$$C`pYCE>Q{ISU(EE!OnB4abn|L4Y&EI33F1%W@csL#DnyJda>Jk%O}ZLkJLIK7;ro__N}Q0Im?oc35H@b*lC zh%N+m&P4g23HmMsb)FOYE(CR=I%gH;v;Qk>uBvUeuYZMY)}*=+)JYP_GRXd1gF1t$ zFKga?G|a?BfG}mO7#fkA@0t!T91Ko$=A4O`w(e#7)0`Qj7|mKbC<~zZcfu+{rBka2 zH`Fon!>9gm4wq{tRmV6l)?@jTQ){ME8u?F@Mm_`LdzQh-KTsI?v|XAGT1ZfT?n1)q zjXp^zr`ljdw(enUR?9Yt0*$%})ST12=k2a}xovdy7UEx^_K zWbO1xeQB)rf-qz>oygE42wdm#u=h3C)K+5@+u8{v+DfMS1S3hs?E{Lw!kPC8#<=zg z#)OY3g{3SDqCk>_FU50NtqFDNP@iDbqNDl*BS4m@mbq@h>SnIjM86s$)uB3=u8nnO z8L|enmVL^mHnh&Jh3U)Cy6%079@eKBzH`QDGIxS;ev$y{!KF|VOco)-HH^NPg|$7K z=)mMSF)@pgmfg{7MNuqh$yfru;H4%tK9g9)wM!PQX8JgL7ZR~3Yc0~hne8)Q04og=l-6h{)?ZIGn(kAkMPkAm7YV5*7q zv>ydc>l~@0?EcyeM+yo*t}2dHx=f1(DhHyk0UJlk4K(cxY2x!xT+@SrDAZW<;o1MZ z4u@yoZsfMZv+ufMhT`kyhk2m%ByglQ$sY(peYECDDCJA)llpVj=c#1)bgMgix9kO8 z_l3TRN=>3J_+bn)LF*Rt+gg!l^)C2ff^V^OD_!uz1j}MgKFsy^J)azD=PO!R*w<*4G4&?EJIE(-QkIXFHb;L(qqkkD z{tw0+`CDqm?KDv&p6Y8iP}%8+8?cO5lDpzbH;;dK+|vh$ABe|%k#QxtKOQgW_r7>+ zmF|hhWNKYW4#%YU<@ZoL=Ibge$(`|dNrTR4f;>5SG+yRrG3)6xAZf}d=xMvQmo4V^ z-T!Db`WNhUar5fMULKE^Gyd)wceACeXA7w1H;swtPBJpI{v^hAw)~>#fPNRV?%u1D zgSuSGx}>GOL#8+6;qL*K34iwjbpkw%!911tV4h5TFi#{tn6D;2n3Ku;!JN%-;`JYn zaCS&I`#x}%Y)=5&Xam?ro5#a&PK4n+#&8CF(ASxFCAlN!;~EgQWd!2#O_Q$HHw+I< z-85Oux4p7t^Y)t|l$J^>$y=PXZxksOv(~E@V>oy*Kk!jN`QPLxuNtsJpL%6N#aArC zLMsXHsUa)qI+b#@Zbje6UT=@&-&!rd@lE5U0cb<=;ORshV}|R~e|^ISvi~o>bkW|S zI!TFvsY}+Je1}$lp+X$r?sCuC_ibPe+8TACg#icJ>a)zMYJ zOldim1sm-`Hp~W=f_X4*gGI)%p!f3ZWJCRQw?~nG>rmyRJ(DHM`B`q1 zlbUTrIX@eU@@!~V2V*-cJ5d(vaV$)U?$dblFk3DmwaP61T;6qrH=K z8;tM&U`}@zxANiZH953hYoj2dF}{ z{jEs?)cB=Mv~$+Bxx^|k96_h>sv%)s!PAF!x7s$EJDpVRMg%)m370|u@L4Ur>zfz z+f&R*l!wzk;NCYKrYYwwtHViquM8tKfPycZ$HL|*tRmd|7htV|eKtaUFgf#ut|{D` z(X(dUo8=Jje{=@_;$&l@3EbJ^3rZI_c}<-BcQcq27KOkIZ2Z?Re4g|9`C{Ww$E7+> zYU-H%23gh0UE_*a(Y{!eEmOqWS}|FuuNl}0Gld#HzJ|?9jvJ|Ai8sc+>>R1Q^2;BQ zsbv4)keZiLO(obUQ1mr=!#dSzoS;;(H~bqZs-O>~V9Nxp7>ur;OyX{sUFHnO1+qRO zmRB~S_Pi1C$uS!d%3GsgM5yYyBhvbS2`-Gtx0*EXgqg+0L7j4&%Cwsj;TErG8DL+W znWRCxnSvA&>^n3%u%If~{k|r9o{TRh8iAvzC*~DSgKGzA8YRCogA(D@sB5#t6gq0N zgvJjs&U*MhNjUsW5>8EYqzyI=lLTY(Nun4haa;8~-!8QS-2~*jgNgu2!fG$>;mee6!*iXD(V2Y>H^rI7iVTlNDmNEbTJ#zm%LN>xk_CZF z;IOU=AS~>RdRadk2n;o=30BR5Px1y#(mFd1Zcmc_Ss`xAs))1s-m>u<{(vg5l<;SU zf#HvppCMf9K~qJ2BehVz04}qx86!Y%2yk41iXo_Aczg4Jihf?9qVK3+&AO2FWmbR# zy3dA=3aZvnfwQ2AibD(C1w5gN{g>R*lD;|?1#{Ry1U7zQ70d69y%W1yWN|k7l`WP` zY%GtW>fwNa8Wb@6p9=d8+&3}bX=0v*6_}rocOjiQUM{M6Nbl5<-V05L z-N&}lk&I}g@u@m_Fv*tKy6l!i8pea8GogWh{2t4 z(U|XC5r&4EV{}^Qo6muHDwCAQqYrKgN;S^gZ;|PXC^DO6@m}sn-@q0(SgC6ENlUzL zxbV5Qg`#mR755Cx@E7humtC=nC%9*HO*DAp+JU>b0*?4CK}X150Ujj=pSH`6bqxh| zP^%6vZWwlxdF zM&A<+emRLdO|O)9;S;cJu64}!AujCZ+c?js?X_f=*>6#PBNiVv+fy$zUP2PMWLgt* zKcsv>*dE$$oAhK9@unKfwVwwsx#P+noBh}Zz^um3k;3v&8C7osJsC-wd51-umdO& z(PC@xuyDl~Vqg;k*w<1fTJ+>_^?@3XB-JZRJsapiI)}w(GR8@EXtq zyzmFium}^zUZ?GgN!#o;sV1!`>5GG6=3bt}W_}e2CIi#d)~lS+PjsE)mJ^+axQ`QY2_=x}nt6J%Xm1h%B1bADe=c)(uLHau!f| zB2}&4+2Ul;EDK=O-fgr(p+Nwn$Oj;Gr!pcy%|>gPz^iRpY&fCm!G`O!l2+8()n7y{ zs8-LtCicP@vM@ccjI4+|_{u`MaBJ%p6VYS+N=5-(%YIS)RsM6WizF+t1mi-oCJhYh zsA>o5ctD1hUiAmOtTh$TvDG>zwB8mpY&R$1OXwMles-f*5|jrM90mLyN=Bc)jE=ax z(_*D*y`};6WP5tu?$|=Hl@1C|!3o#KaX7$AJt; zjzY8im~9Y`K5iHS7ZjOA@s!tjKy@5Ew%^le^dRKieXA`{1p4-L<>tw9wwx_pkAtMg zC?=y~R4jOGh&N~bdsS)adewW))=7V>Mm3_D<;<@QFJqzN7-LgMs*&X68pxLXQma{( zh_((+@}J`YFFnQHxa$3qZu5PKFzO}0Y9;$?CBJSZq*5vCJVc4@YA5+-LI5nvGubnG z&sIs4LOGD4Yhn8ZsX!#=Rm_#BOH zge^1bp}=?p#eoaOYm8`Y1mSm+)P#{)(k`JLh%39(T)8lpD;K7?QtU9rmm62(%guB6 zaFFXL?i|1;ZZFZ{RSg_=jqo2GdBNyGBzUG^6RY9#a%}4JHsGuXXJz zR&Ztcu&T=+<}F|>s@kjE;I%i#L{MnL;)w#vBr3=HvM29q#S3e(y=kunJ8RA`J!u*? zVlIQpv^+P(Yf&&gA}-``9jXwRhGr$_(W}tP3(S%U@*qwWBeTFpV5D|sy-C0_Fn|Qb z9$V5c-oEvJBrEg+k|S>i_51wCMZ<{a76+8(vvxLoncQ0H$T~CorblA}Og<|>31HE1 z1rKg3hsP#!{K^$PhHCov*MKL@03(Y6JOaw5u%Qt#tORiGYPuoyt0q4Rx!Y^&Ia-1l z#am(~nl%mS_i)sLII4IKM=iJ%_;VJ=BYdiTODmbF~a0vb;9J1*PTZkzg5{@Yl!7X(;&D&jA`e`w0 zz5y9^;uS>5cqLdv!^#@Ma&c>@9c0y(eqT#k-CI*!*I^4pG5EqTE)rp?Wgp<=vd2P+ zpW&p-P%&%T=`NJ{7KI+NicMc8lfu~zs>mK0F9b1>G0r{6=KT>GOa=^>ny87CU-8RoKSJu;>)&%fJ>m@QD#W&A~`flNd= zMDwwJY#S5~TuF|8^lK6r16@snLL6@IArR3LqaC{DTF#RW_RQh_*4z~%&fD*Y_xX#cSI z7MoVkndc3u=-?>J79hA@&`($P1&%TiJ7M%f1PGv0+-O>$c_{{8OAEikqN3ss6|pv~ z6`@MxNeV^m8`E0(9O#0%%4!q(XhnbuH?Ap4@Xd<|KL4qXx%O2%rZ5|*u}C*ka^(#g z&}=Yx8sflrLLSX!-!4bk z6uR?waoS?@C#{zKrv96B&66LRwC~-$Qv~H5{n&))o2=qnX8x?>SOV88)(522=uLi4Qe z=H!EBC#dz>MS38+_l-nddm4eU-S9?p>-{8>W*AFs)0##-IRn3ANjx>;S|3l!32KxTm|l_TJ?yA7%Jaw#e= zH+mTAh1wlx>U^6zsDjyJLgIO3yAMnuS0@=02sG1iWo<<)ieRP~?53a=H_7g|?c2AH z7v;_%A{h*t)Rl;Lofnv};73@qpL0AT-DP}SKCM2~ z)*=-yn58!8l7rP|=T^4#a*2Mngs%MvZa6q~yeKB~N|wNIk*C`*x~LbJVgtB?B9c+a zAx;=?L^O?4Y}VK)HnAzgm`F~xY*}U26Wh#EkChzK9~O`%=R(p5rV({q(%4WrUy=sm zE&eFT8U{xtYntk9Y6EVYy<{+gAlO>Oc*3VDgvZWxoJiteuj}2k~*oa5>&ysC#jI0kx_?%oeyLY!qP8_9%yAcVZoaF zqaMVm^(n88?juQsS6-Ci2eRe2)@qX(H`MLfad0iNcmu5%Ofb83)rk8@w_ zwiN!Ey=ug!QE;l2@7w-K+QFPQL*T$grG+Q#ob5mJ@Ry&1?e_ZqVFNoyE#l!M7a6rH zW)5$&ZhSL<<0q7Q7`BI$QBx<|nbjYYD;T5UxPGx#9|`xz_{|Rz?}V0O&i{)mlU)+I zgRCTMZiL;EJBK^HJ_d=^Kf%7G*Z-C8QtcC6B0V<3ocSWep@qP}2f;D=(hSIWRQpIZ z*}uWF*1aqgU%GfXJWgF*)HV=?e8F3y8@TpaJMhuj5B&MXz@Oh3IQcf73j<#|`+;9p z4E(ajz%SFlZQjtD-*ua&1+Le?)|m3EvUSDOD9W`mH6jpdKi-}6cP4krhCm1ow(P7E z$`NIJur*l-2cH)1X45Y<_e6Kd-aCs2Bt;|2kA}e4^D`y@nLDO~_$2Cr3aqR)1U6$a zrS75+m<5DZotJnpdheB4F*F8xY&7Zb?!QK7>9(iGM`pV#qKHv4z#~3DLxDDOF4pkX zzt&zw;{{hUwFYsPMsqzT(ifYW>q>B`#kFcNOZ~b%dAw`LaXrT%3iu1;@L(1>z1{uS z+UM(}1Vw(0M}`Qjd}S2dZWB7z2F&NegCFO(>E0(yt84BOtm#Q&&yFd85#@SpcUq_V^&Td9D4cY z@3{ygfJ?IlJi7qLCc}JQ%O2OVPqcev1ojn% zSCOKsenb?TdU3IwGyp{`0tR3xM@o+4tGdguxN+_?L0I}REk{qL=8ZD&Jasc>A7%s$ zS*0JdYl_{@o0oo!c#c#Ayw2XNr5}@p?61uvd$P1+U@B75r>y<5#Q`5-D*$)2Dq&Vh zO(SHfNubvWHUU{+kfW-i7c-X83*U^x$4Vq5QXeO*h{XEs*-E6;iDXO2e|u#Cv(0Cnfu>gT9HSw$s#NTdrN!%`(b3yo%ZK4F6}w0r}jRPki{&m+5ec&(nHf?i>Afm zQj4)>UeQq8NwiMGR-GwBI$){5R=k=0=DSQ+%x z>ZVa9r!-EBMp-cW8)XGNp*{Cxrw8adq~@VR>v{CxKhe~FlTxB+U9>}PPus!5o&a*> zf{dNzHo;TAO~3$JzKOyc%;z>FCiMcJ?zKO{)(ciR_C)@d?4cAJa4H6a+5rFCsbbu| ztf%s~5$P3bW8X*r`%dA>fCHdBQ$N)XC5KA12-u}fJ3n3`OxO*WQCzX#fRZ%aB!$;r z5rxPTeqfL1b3g+5;39!F0N?gcGWR)~AO40KpOp$u`?)iLmp@3-~kiY@nG zg})h#5%$N0yc3JCMtS!Tf;GtcPgc@vEEQz^{Zqw3)_-oQ7=RSd_)Am8D=wSAI#moK zYkB}5w98b1IeX+5DPn| z$vS^MS?M-oD4K+qB-{lzNv{;#1mn%>742fq>J{x~qHzmu4tiyQ(kep3*od}?o1=?H zUHD>=(v@Z@Y_UY?j%F!bpnl6qke2$&PDhx&LXD3;)YMm4Yx0eBrt}po zvm97PXPmR8@&=Y!EN@^Lg(7KMG96d2nd!Jft(lH1*bHqd9mmc}24;=$bCp~nqo}hp zRB%rO1&2(ShWiR%RAleTQb3LNo_!!!0z%=EB5un!{Ggz`bw!L9Qw!)|>rca+8*n9i z0`EzP^3o2TMR_IJa3#9bw#+Ch-wYvSA@mDhtFTS;{EQTHXyIDy92LP^*w)S9Eu4j7 z*7F>^^??m7*_KP3A7C5xNOJDhWlb3jCpO`>wW()&n<9f;G>D1?MVcbdi8>dfYTgz{ zvc_P>pbUOBbyXHj8>6aJ%ue+eQF>vIrD_Z%X0ubM7mU&UavYKcj=%I~-HwhE6tt2Y zk0&WkgBVF=a?&`kPvjQ9hFw%~33EM$nj$%M_@`!`o^T(!B|JMUZAPI5*`9vn%04q3v#YqLvU`}bVNM;ju5LxN*h=Jvt{le z_hv?@J;mYtz6Z@J~O>8_@#*#!q$LiMK1vYQ8)Ie zif!??fI$KAdg~EZ2p)>%j{sshJbKI!Sng^ZW_Eug%po>$m5}6*VF2juU0}O5*Ru+S z>YD4{C@zJvngXm~*UscB7y^zot*ocup^S&otW<_>Y2xz9->SjpHu>AlOR9h&i`H?C zk9}#8JU$uN9Ru`v!tNMTwhUX?sOqZ}SiZ6o&Ulq_mzck@6D(NH@p~1Cy08=aVrtXW zH3d;9gMWAhahItHbPgJVkrX;YCWq+=CTns=;8wA9jF|P5LQ$~stWXqeJS!9h8_x6qzt=3)pP!M^8B8 zZ_!W}`5b$3h6YnJG6l1XC0ts+WEc4r;=wjfMO$0E{LgP%}oyTK%qAoU_9nFjq}1C^7_Mq1xYI z(dp(QVmB2oYlq1KGewhyAxdtasmTJnq%m2TOG=YUHCd$7@1#z?`ec#XWZ{$4^kk9F znJl#9>yzU^PBR8pE^#$oL@H^(Maij`xQQ=u(Uj&-{nQ}dp!lw1-(ALcoly+#Nw)3D z&@El{6szfjc7)NdDV7M{H>SoO*?swu?N*shX>62s{%%`)Glkn(0NG;i?uGqVUZTDl zKVU^cX(if!9pcj~D#}WJia7MpxL1ZF;Jmhg2@{x>9|y`i1CLV#{qYheXa2zNeV*vR z{Mc9cVP}zr6mKu)cNDN3VgQsZNyrQ1#`rWnG=@<)am`^Sc+i4p522E(2tYfG(#|QI zj>HW%Oo+ri)O&-{c)Jm^M13N0@qt?CC?dL~O>W0lE)=L{zR$5omS%D7ZFZ;Y+HR>> zhOhzO+~iAIUxf~LmnFMOpo;P!@b({ysU;b%j14CTw@KOobKpxxRh6pXq%dA0p$}Z zDy4Mkp{Fy8w(J<*48_8`_#@E5*(WgJ9NyG00&hy|2j0}~w!_cyvUt29_4%^Nti)kg z%qqUEI8A=4g419R>w>@YIaz6;r#QI~lR76CVY^stj!Fra>Bf2T<3j00VV9~e|q76(;M{Hv1jhD6F^Lk5~ zibChhR65)vcS4;r;1HGOpFNDM7hvmc2(Gt{Kb+qJH z$sa&X;MY6)ktzwEc^MQsLP8V+BB&S@O)0RPC2Av1=jvn|@)WVDYc z7M8Z z^bl`);pj)vWmiT=H=)1D`l8HO77wJBkd7hi+~SfoE;}Uy)*bn0Eq4#-BMpbQZ@JWY zSUwU61XP*BcvUM$QxLY6C^6wvAFf!7 zwDE&9!m{r?8xxFfCn}Ct@jXDpH;ndA0I9j-I4i?uwu<*5iU|OcQ_{X}E{F%Lb6qGv zP`%A@eKY_#Rrkz4S0EUJ|I+a={$tB$Cksz?T^0cABy6alemCM!d+>G$-3RF>NdX73 zSkwQBZ;mrlS)@0wjeb4E(mmDXokfwblm|s+S(cY1zn$&xUj8+IJ0Xn|9S(89c zopW5=IZtdx)#nv8D+!e4V*JNK7Qo7Zxu6%w<=q112;?9|+*P^6wwV7Mu^o=#)Uho@ z3Exo#R^!Od)bL9T+9W?HCwatf^zkss|Nrd03;bPIRqwkVd;i~$op;(K?b^F(`wvap z^p%7@AnOl(*+R>!R6qpbXiY1$SU5dLY=cc91(XP!kM(o7*PLUuy+Sp|i}%(edIG0j zt5yh7wFr8GR)~s+ARLVxko*0OG1ppi@Bbr7o0jrXLjP;6x!0O=%rVCpbBr;^9Md+` zTPNLaAA>15%v25|V^Qt$=tq=sZI2a`cn)W#2wQ2Y5w$toM-*QjL1~PrpDik@Oe5M3 zkp_V~ZA_1MhMo2qmT@*2aCgu4YFM_;!%OQaR)h28{+W7S?bH|>Vyi|X75%AhSolzw zSnt)9x%h+Od5`4EUgO6-@ME=8V=w%u=|lQkcHi(;f1ml?-rqT`5z_mpz7Cefo^dvv zRC_V*9XB72sVIAy;X{Bt7-*F(L^pZ}d75ZmKEJB&N>FJWeM_0*=6ov#^8M)<(XbWc zn8Z}rim_|jI_H9nPE_!lRHI+~Al$^8AV9wm)W07C5?Fj|!wK0Cp-3tXqwqHfDdj*4 z2iD;Eh6wK(Bh5GHR`rGm>?mY->V2$>Hzkix5f+b%Y4jv&sW(LM#p8lNHRdQx!6D~F zBt%t89N4KhMATD?Hbl7QhGp39*N@l`F;QrPNzuP6f{!b05AD)|>NQ*&@`JfK5RE1| z-MrcqVLF!we3oO7X1!?;s2N=C255@%4o4E(Zj(hevVdw^3XmAGT{b1k*{rew*-i=p zXh1lAYc$GA-K(WHg1)~($}ICtdSt%wJUd7GCSaa5q4L33mSV#06-(6v7j{zYp6)VQ z9N9IEcZciF>2SUuX5?3vGD$P`Hdp&jioBQ#(@wOLBDa|Q+!R{egDEaSi^orKmo(BB zm1?SQCxvJ$-b;ewIo#|;`0m<~u1&a%VK&7o`8)u#@6n+90J2QeTk%cf(GKe`$k+vr?xCepl_JV7lrwJ1J}? z9G3MR{8^*6lVahW68`(bJ0<-0g?CE$?@F9x5&qhH*UUbO@bO7ivuoH$F=<;Jrr1b< z8-}zF)#p z5{=8`!Y-Xy)Gnp#&F%{M04AD2s`pDstMdI4hnLEm_}RWRe5MnJbk$mAAk&*JB&Twp zh#opR#)G*~C(~-m(pm(mZslt7LS4+Gh=-rG1TuHv_-8*L_2^Jj9BcYyTniW99=;Zj zAdVznu&H*e{Cc9Sa#Yr&OX61?!1_>?&B<1z@`f6rGWq6}6JB|E@Xsl$h$U2Y;BCpn z0k#-5S0?dbr=B~+=;;8t+-$i*-4hAR)ee7E9(UZ<1gr_kEVsRtG^z^7@h+x@F{ODD z++gUK^DL=*GF3}FUZbY+;fnAqb2xsILPcVms!G$qt(xL>51Vxc9 zu%k(3#xYwmCd0vD<_l=@l^LstMI}jEEE$N=`@l)9Z&UEU7L{;*SBpwRonKo`bSSjO z2fm`j3n2*|f!<10t3^mVw--Dqh-b3}sfCzn0t|@C(E>LYKa>|Y7+B)}tVioGhv+n4 ziUF!aF_-EnUDm8DR#_{@_u}^^5T>a}1;oQthwb_s*b;*ua}uzLLs=7iQ;c-}+sTB< zD)v%qn+a^9da6)k#ngIqjDC@=WM{Ql=PbYDKXOb(=#MwTQF0q7x3yO#+F@k1tOCN73m@dRa0vAJ^Wg;=9&KVRBW5$J z$D>eGg;weW+_PrM?mhqFmh6tw^#?jB~TYkZ=(Ys7)F zj}k$}j3MEvHBoy)bdN}M>q)1(*%4?5hJU2riNAPtzpc4y>&mJDtxiT*QN2( z2r^DaM^XgnN=!%WhYB63NsAgN(nhIoE#qs5YdgdRM;Y=g$RJ93NW@ejY>aTJ<9#WV z_CX8pXFz~MH;aaC?F%8e8(sNXDIHys z(*>ynBV#fCUw!kb1#|83nO>3bD6ki%y0`BjNsp_tLw3Zq@m|F z(~F<+aC6wha2P*>HF#QRUJ1tVX!&ZZNW-Eh`r9D5jy9@l0z@?Y-$gnGazz0(AR*St zTrNUR-JqrFG(@PLnsfqio`Q8^7~TqKCSnpaVrP0}qVi?&Y-3`9*l0nvSVOpno!+eN z4B>3{W-;fjSUK1Q{Guo(jl%14@8YL_bGv|e87cSuhgH2BkUc9cUx8v1Zj z4%d7WRs{VEY7v1*B72AzhK;`&ehK`7=O8IZkEITa3p55Mvh;7(_2(EvTuIM!f-wAa z_MeIt=X7b=%(^Kp(Gf#>SQkvnu?8prSM+UCj(eH4RqvUxZ^aBAVk`P)wd5kxq4P6r!Mv06C=1E)*77*n>{iOVLPt1Xwc zu{7sUXa)6vvzu&aWsMUCoE1pScL?2w_=1+s2b#(5YX!Fg+KA&9L13}Xp(^tg^$5$q za#GGzC*u@>GR=P-K(!El3)>HBPzSI$H>P0a&X!*%*_U8k!BqQrKAYN_FH~)i`id#* zylxc)8ItdA%_6oKFQDO|TYr}yVesD4E~-lZzhdds@UYJuq-iiwz=-#j-``tN?!4nx z&iiDaqp!`jishCqa3$a`q4uQ;WlYO2XQ-lW&5qW62H_EIfiYx z#V>5IumEl`g=FLrm(8T=TcqhZE&1Ra1&wW*h65{LfE-dm3l{3c5vh&+3i7F?-PPhi zUZ_>()h6Mp&aQ@LRzNe3I+n4Q6f3$bZQ3N|oD>0{h14CF3Q%{=-E?%xMagav60`kY zUOhr6K(XrLP7uWlQ#6J+3sz{W1Vkp;8s?Y0aixhG`r& z^vyqFBXdv%AtZ|wfY?63u3&@BMGTLw=B^4qRI-Oh3xMZHW}+hv{^|>XyBly(b9H+p zSNQm_(>&9ZrEC`qYtM*C6i_;LS4?{Wi1CpRz}bB3xMB}4^DVWm_DyXJX<cs-z# z!i(Xq;^UFgX)z+FBCOIm$Z^}C(~h9!uZ{t+#ciz%*fZ}64Sw3Nxe$Z~-VC#eqd}>; zs%}5qyZq-TzRSN682|?cN4Xm9{_BDUfc(e|p&I}qXHy?di;E2a<2xjdc%o8JL%JL> zh$3<#1Auy9DSzD!fJK^#4S=W6j7hRZnu!g7r_juC7y!b;0tUbn3mO0i8v~$1scF+b zUDO6Z)X_czpdP`<00`q`)f8b=;6}9W2WkUAu-5u`Z2(9vR@70?wbCKInaBp9CJE<= zdV&p5(?Lx(VcU|K0e#KJWxI_8{o*lU-E@Vqce)sI^dy3ZE<6_&{jk-W{)_hi`+)5$lKg~^Sze|e* zC9v1BW4O`6voaTSz_NqM$@RnJeAGlc^V^EwzT-ku8xvhH15-G`$gpVLEhF=8!Px1C zx;+PE*2)BOkH2yE=HlkrdDYlFsFvFP~5DhPc1PTtp@;PIq8&(!eb z^9|1f)$rg))bQLM_vgtD&)0_ioOmZTEa_YXv-m$(3dbgbTNt0PTsX{V!4-kB$GGNX z+*Uo5t`}kU7;HS8lF~{WrIK7`sn!o?OlafuF}LWDhDP3Uey^=k{BCTfK<~#hN?KZ4 zL^LKGj-1l==6W{WSl`W%R>#%O^-Rrv#~Je}r!m6j3V=v-2E7iVub(-iUI*3tGwy|) zSl7@8n+f~+V7n5$4>Ci1x;f51nC=q{LGy_Rr2s7`+@Ufw29vsh%Ob~{8^AKpY#&&T zY(uRa3nml@oPV;Y1$hAyG_P>SdQE^yT92bPpmIj1UJAASs3Zf31v{EaFUXD)2 zd+2B~9fDCi;2gx=kjpz7Jfe@W6;_G5 z#$|%1P{PFNziOw~o*K>|cKuJVgpo$fn4VkHLFYZTC>Ao{>#)*5tRUYHkqw^?L0WjY z60L%3`Lxy%&MsA8|*HSxgo zblp3=@Ly;7(ZKQJI{j&o;}IQj3thF!0C6F%H_f}@`k_FY!~L%Q>DE$XaUEBYh<&s#J8KIgFQ@EI=_4qD%unAx*W^Iwp>9 zj0APY1d$F~2SZ_l6uMCZ*1Q~loM1)5bODYJFv0Nw!HaXeq?8!E=6Hz!Tj*Gv<0Tl( z`|D|eLUVGvXz#SIt|?RVHe35tf}72Dr=9&X zb~mP^x2wC1A5#HmzHlj62GQK0`;I$6nS&<%4o0^~ZRrx8= zj)Rs(MbZTom9l*YdUV?!38;|kaLB@5z=C^F{e)TGG|%DBWkgQVEiI~}w<}~gxwWta zH(A-bt)7>JHQU`7CXhK=3_&!pE7W2nOpxYf%feBGJbeZ7xB#kRWG$Bp0a%KE9o8l3 zdYm#qLvR*@!8^6CM9>Q~r%+RRNkm35B%@tRMa(QVb4z$tcg%ps(fCj`l?&sVSus&i zo7=)oJK!b*H!RKpt70s{o6R!f!+%U02l8G{k0#%JGnoWhdvNyNh1ckwtONO8*5?F0 zXj9USc^$~cyPZb}e>FblHPFFdcO!G=pSh9s3<~CPBeTx1pc^^v`2Gbu{?Li<_(O5W zA6l&ApL0(#D;>6c%U|y}he}$<^*n#a_b<}%Pv$n_qtYY7am#_|jY(LMJ)A7OT)^U( zwEQ_Mv1s|WavWA-8_k!UpGh>*hZA3k4T<826SHl2n-#b&EeJWn!BH@gts}4~tMfmx z7c8iGOm~}Q0k9;tA-PU>mV;Y{NU#Mg4R?wqTtCAw=9_WbVa$k1@~nEcX$|>O7a(=m zH(M823OOB-T)iiWS}CdakU>H)+U@4Odk&`5>e4)widGI zP9IA>BmG3ggG)kw3Ts%LaR!dpL;mNGji<#*x?afmR71IZ!I2zdB+=aBe{)B5k@fZE z(enCo#uN*b=uk@-L?TJ8sIymNm_~w59%yW+7{&VClq6Ga>7;F>k>nQmQiT7NlbSeu ziB~_QT1U3Y#8r0^bAeF44hx~63NdOc?6z4YOmXCsBWh+6+R)0g&O)9lCZvWk4(z-o z3z-&03sTo;(ONzaEb~-rzJ0K0-@3yhs2mnn;(1xa8^Hn$(x0b6JQN!?&h)|3VdL#l zVX5FSTP4DYzj>r>n6c&A=E*BkJW=?36Xv@yUu)C=h_N~o{&2ny7 zy=6`$=bOSomrJsYiJ>?_oyDSBLkOl;*l+;PxydznB_zWp%fThrc;YymFEnEw$`|Ck zCp%*v$|E^?C|_j8{A@jO9FosPK@%oyNQGk)ho0x3I9S78aK^kh&*j7)YxJoHXIJ0R z%R}r=et(}13YmDATwweV^WBh$1ibX?Fk?jObGiCW${HutfXz5ATTq2;d6^Bdk}WJS zV=hRk8x5`~vE-PMbs1vOf)aNkb(v>-EWmHO>Utu>AMVaA zpss!AkY{)7w+>;MYU+Pv5iQQ*Bo_<%U|Q5t@jTkxBWQDVT-_t4&9Om53Y&8#CX9Uc zmKNT^sxD9nq_#kk6IpjY$-1qm1wKvh8?yD9Pi03=s{;j-Hu(wIS!dc>2%}jdjxqyr z3HqIf?JSY%H7y%)34W_$N*=i-w1nMgcjTBJ^Sev5&Z{yvM2Dr}nQ5hKil|_wKy<`2 zMX)8YgXhcyADA?)Yg$_L=4cW)7W7A|*Kw&_b5U zD9gx-11KW8I$gHJ#i=sOD)oGL)mF5?q=H&E8ctDKwX8+iQjY?CX4{02ClmtuO!pPK znvlx$jJMmCJuqg{cnpu1SpYinoMF%wt8>zguJ>aO1WFHsY6gJEZfg9Sc+M!0Q!8}H zd`TU?HW8!+D=V^qBojf%KX;%pgD9Y#_fNN`mwVG^>SH5=y6MfFXW-v3*O`%IP;n-pQH)h4pz;0*Xmh2FyB;{@`k%Q1ls;R&yx2T> z|BC)#`~6j{U_C1xS=cNY2)3^$jXAEKMVtahFi~pd;E0(hmd6WMueo_JJeax7)q|yh z(JY7YNO#iat_dmj=-8uG)6JFXge|Tp2Fz1a6C?aDENBh0rK8V2Rg8F;!Ss2sPdkJ5 zDPi?coxmu02-=KmpXM1L8yx zC@x-x#FFc(F5B<#$zrI=e0yDfK%uo`R=A(rne5BN!s~h{M|;XdhNI=Zw%E=x?35N| zzOz6Kd)oNEaSF3H`XGlLEILjEV0Q4|*f^Q&Mu8CGl$s8_29zDhS?};MG&fE(hGDuq z&ZZzu(NafKNN;Lzmqal&H9S-;s`8q_)Wr6ycZI-21Fm*RFvn=h^EI+1VS~gnRd1dl zQQC4nbyv~!6w1_6u3>+}La&P+72;lSFXDJlG5AWu%~ZkWlVT;>grf?sSX!*?S{_TWBdli;pc$zTt#2-~BF0;K zQDR(&P(MVlm)NdYa&hu$yPA*cGrC>Iz6jq6@t7WcE5uZ^72@%nWq+qqo8rMGy?eSu zgKb@MBD9!c-P(C;3kwXO=D;59od6>paw_Urlz#C6d946w5a*n+x)IaH$pf6hhBVq0 zYb*y|G$Wm)q zHUz+k!`#e{qZI+5Sg)yh| zTl0Nd)?29QIV~L%8rw8&{NljC&oGP}U0z+_m{rCx##y{jbBycVE={IP|6Wyb%xXAh zMX{>8Or-FPPGGcW33w_7MevXm!w_poWcDmpd8)8tS-s;(^t-xP8hB9}|B8zeoh1SP z?qg|LU#+}2VbVlqXd~0Ia$M*A44alwX_7eYf?`Ljje9w0oCpnSJD|`{5NztDV8D$J9h{AfiBnwZb zU>F7Re*N-<_DrF9O-kjQ>{mJW4{W`u+~5mc+4^UC=&E`2Q7Nk5JS(*`MfVT7${VpE z?KGLHVw8qQ&}x-6CHGCqXasCDua_*rhQg>`7CS>>1i-<% zFoN_@T^MzV)y(kuW*2s}J_}5?W16&9eP{#x25l7T9iX<4h!t53nR#O*M$*ocGiUra!Areoq?|0zBtHh4JUx#cu462 zk6}ow5#C3hl!j0EKI$d6z^t;UBR0Y+i|}S6tg@&ZHo_{4dSN51vZfR2z(J%*#3vf? zW`so~&Ff)=2Pnr!ScMS)KEf)DAoUSeVbmobVHGwb9EP@k*u&5c5Qq=03ZsU6XjK@2 zGYoA-?BHxJojqO`Mtvdg&0IQrq%Mqr*T6MUjw;S)OVeQ#gs7p?LDvbIL znBaGSB=^>Z(dSNm17z;hr@{!N-Sy`Y@H^|m1}l|dsTdL107euVLFm+{!U!0rJ{3m2 zex&|90%m_*7y;wdr_Uo`0`*m_K&JwMN5Jf<3nO4Sw>G>P0kg9%jDR^}zzpaehwH)! zm_sV8r}EjhSOM$B^HMdESHl;vf)E%8MeIAf?V0_Kpw#u5v2H@^amI4T0>k-9JfW`A860rOB@7y+}dE{uSA zpe~Gnfq7ys9TJzCr)Qfu4M&eLn&>NHQc+gKq#E0ZNrl~rN!35jjdUihc=qu=p54~h zcVk(KqMjSaQWW*u7?z@_*T%0DMSV7QrKst#db_QUTkYWJ%GT&-?ZB)mj4E|zRbkZl zL1RG`MnF2Vsxaydj|{j9qX8F6=Wy`ex-k0OnU(kBhMZYd7=g6A{yYMHXIH#Kv#Kxx#+g-x5ik!K*eZ;G*;f}v zz&Nw&%?Oyltd-mhp_f336 zJvZ4Ab=m|+)L)YtO;^=TygShZj{s@r_df9wBu2j!a)Civ)aF5x0+dB?xwxP#g59MB zWl{fxx;YYLZ(SID?ZQH`CThlog$g5hcGsUrh}c;dHrS|yMG%`Bw>g5#Wd&fyJ#kr~ z!U&c}>dzxs_Sc0GEG{ebc?3(46_wx;)yxrGd+NdnF)k|rJ_g2Rg$g5JTvn(s0>)*9 z3L{_+32e8~8(9HJ@zA-fP+)*9-i&~8S)sxRn8)>bqw?&pWz^<|X&IE}9WBSOYmJY)OKh#I<4ZBXuuT2pyBSvKcrRX+Ve=kQ+nuugw%)St z3ScFtuHal=w26rjU9hC39pga49ZO}ptYQg=-&X@HKLN3CcUjF_#Y%0QS@ zhQ;e{h!o@^lg;W!Zg@ce=JMcN_x zjzXR-@s1KE`hK4fg0JVaKj=GbVC0ttL-6A+&q)MU^V4@O-P`Y+_;}}dyT!9~gW~T# zEgKZ?Yqcagr|!(P33z`pUy$)73rkMcp@)g9nJ;>aYzYY&{^ymMm%Pbx&FjnZ5|f#v z-9S=~h5%zkBO7#VTOM+vYcgv&vJ=tOAuyH81OX0QMu`4Bc9QC--0#2RskJEXS3 zHR5XdnB*lZBw*9ByMyowyW2qgpx>Pvr0|G(z=E%2?%Y;QxtlxmT0Q6V$$ zG=-2vC?xbvcLhz5Cb#)ljBg?|Jq~HNM7Tuq61ZVe$J&FrzK%L(E?F?@m_W06qKHH&PUxQe>pNzc2Q<>#@gcMYYlxMYsaYBaRh&>=DNb0s~m4 zZ;L%fA@Rhe&rq90jdkR%ddAyDN=W~C#@lUoIm3IrBqA58^(3(-0qU6HX(=!S=}H#W zhagA_)rTNhoJYqc1nf<`@>&lXK8-NU5cZ>iuEK?9>ZlTejYGKbX49Z8Pom{QFfwu# z+uDYhD$;_k6*N3%Ftg`O%G$t&Vcrf3ghdT67%lvUG-E5D>7k~HXHrk;s-!jHYnGs= zKA?*qYn?PT;q74`(0n+oz#^Z?uAW)czLk%R|F>7aK$F-I|D~q?>#F~Tum?y8NSS`O z$%BQnluq-O;w^>Y9e%t84SV-c$W*w=KKl;GAga#nKuyGN!r<7Kr5l zj4cqhzNeZ|7uYbRL0*0#LU5cSc&GzI3^8GGt zINH!x0a1z56Bj99)tJ}9aHl7p+th<6?|(B1Y{(DCT_TDs>Jlldtt&*DT35)lYh5AW z*}9TH;$4{+hfx<=z_P7r8f^X#!x;E;Y}(UP#n)Ok0!>eB?Q7>-M4=xW#)&JOp4ifS z41T_<;S)w0Adk7{Ye@z+J#k_Gz9f2F&2ap!Z=E)E170x+Z zymMFglp;MRff37LP4^aqs$(&H|5Cx7sjJ;CcW!p~xHD6{*Sa53U?&=MPlF=Xd5~$< zW=;W9tfq~5+T4_!UM5#`*Po!)TQtVJ+Vr^HT{m8=e{lBO>0Prk?<`K4RYsg|pL*A> z?nyXTri*pOspSYc6HYEpv#82p4q%-sitgH?3&ZxhlM@&8jn<#=v^X{IZgo%BJ3F0G zPZV{JGSKHYpg`T9VhMYI9mja-yz$vqm$M?Pe-$z+l4!|YRRzGG5qvghTrv6l;tct0 z)@f3FzCJG2G3}ihL_k-HEvu%sjy~@B3cjx z(X!LUa{&BI2;$t3-waz%C%YoWPmb`?J4*<>m?~#%_wPpTaHzq4o4BJv?#}iGxjV-Y zeU^E}tQNkmaeDG)lgOEq(bLY7iZNcCWdNOJB)Tz72^%H7Cjf5~^8Rc~2 zbS_vryAMkrmJlD1!$+HW)|S&?WfRsM)mB8L?KfdMoY>gc#Q&iQbfAgjABZJ1dDhcV z?^5c0PG7x`NuwBm_vk2DMm-yvdXQ9q*rgunG0hbBl=YUi<#O7YY1+|LI?oUuKYmwG z@0oq|J}ymb01r=ASy@}Ir2aGd>i;cibSJF-Rn&iaU;U4o3fiw?JbCy@SunA_ul|3M zrpX~BCvf63d@y}*Jan9yI>NDW+Do&;p4MaqyeI+`lfl0I+Z z$g>P_8vB)#l1Z+loXp&|j{lU;h|Qk3!Xhb5Zlz7+`jH&A=7+l*B!teliE-!a?xL1C zn$526`EwPT3wYBexbB7AA=B`BXiE$*a2MnUd+$)EHUxEQi>XsgRnJgs($x^3&roY9 zYvU+j7X$@ti_LD*8c+-Dep)kKc`~>;pULe)WP7inJLJk|#-NWrxiW+81T|3l)b;!| zP!mRKWt|~k9+d^Ls44Sgxhhy;YiY9RYw{cF;?vJs`+W1w!mPCp$WHBp?AJLQZ%}9* zzpy=pdQS-~YwX(7QS?(;mL}unM<3*L_L=hFL!VAMSM!{8wOx6@Oo4ieVJYyHv9h-2 zvu2Gj%*pWCRCy}&v~^ML?QQLzG_h_RO=WUG$B}6Sc&(Pnlk&a)<1qoa^B+EA06ML} z&_ICBC#R=eq*(V-X9XYMR~tx86v$t{FE7#y6PT)LoY5u51W+g(^q>~e3Z{Mtl>VSZJ8!^@`SU~I9I~k3;OOwXknK1X@O7XyiP6- z<(bz59T$ zx$8Gb?$2;PJ=m0H?%2G9JICgwhD{4Dj>hV^v3aRsQ-eay^9;ZMHZMivHROl!K`X6P z$V<_E4bc}L9noD7eF=!Zl*-l|7oy+$YfmSlpI0OL`8A@qpBO}MKR!fnUl`HbD?~r< z=!out=;wpz?I8N(If(A3>7gOBfgtL=U;KR$_2Ezd-qT3bWsU3E8rLr{T-)Z6r$W>( zFkFi_sQKtb{Q|=^JTRB2Um#q&b>>E4L+>w`9dddvk3I~iF$}W|!wabFq~jfiNB-pL z9EKOx!*E$W440pnVYvMGhT-yshvD*thvD*S7+!evVOY;FT*fe5&M>UjFw|}Vx?an6 zGAMGMb9v5aHMnD5Y=*##yDyS!;Tls_uf)ap?Qaj?CB$iFe6f|j$duVD!u)uJ z=Ec*&+g0H0dzdJ%2Fg`^xU=>n{0+{H`+q%%>}&fmcIEG5AvM9D^@& zT%bz4oVyx>uLu~t-Y{ss7IVIk!#}(zNAfGY8oW6#6Jp&3bCmbw-7(LMkBHi*RYfe^ zPkrt^z8=yvcg@QUd)E!%^m;3Oh2iwtfYWP*(=)*7OTg(%!RgCrXJybGXalYN@zdri zs!vu=Ut6Au!fJ^$e9eaXe{vr8+OaNOtS#}6PAu<(_ZN8@RIHD^z75o8X$xxj9zCJ` ze-8B%eiB(lpPR=JICgl?qP``^#siOk`7@FthyIS^K&2nPvY!WDIhO}+fC8KczLz`a zfmdcb-5a^9N95n|P>;wD zh7tLpFd{e3Ga@&7Jw75{mBzvA(cKU7f{(}><{6RDo{z}f_U4YrQ9cMG@jy^U zhphD9*ofR{_djSO^13i0uhWQZVnlv`5qSe6!f6H(&)ubrA4rKk9`CidQ{sd==9(qr zv*BEFh(u6*K`T-x%#V2v^ilV6_4HGBMCj&rG( z@ZzZ6-!#|eiE_!FNBv`B*~nkfZ;-TPWTT1g{JTGp4E^XkgC-`e-Z;+u0zcf(zdt;e zf91w-{+0Ib67?qTT%z90UCpvT5?J+3uqq25M6w6d*koYvL)2P>K5Z&CH*NPvD06;Q z6RfAX6QldXaIe=GX%vEoww-;Owz07t@A4h7Ol>Y1-h!>5RiYqJI3|mmjRkiMFzK7D z^hb;_e>gDa4~sF+hcR!0DMyb7=MTJRUYx(VALnnLi}PFhP~$kil`_ZqTfE;mj+sb) zG~oQUW5T&U9mM&MQsy{U6AjMad{mq_Z66EHZ)tE{yhV84RZL28zRhs{qlWW02b{lI zIKKd#-wMu02Bs#Utj&$eFBhnM_qzke-`bDkx6Z}!+iFz&TSox1(e2zBZ*>11caH6U z&z(~^I>V2JN$Kr28JW>r)3d**S?9<2#IYQzhWJ9&+^OmY%Wt)LDWYoq>{Q*?9+S~{ z@wNzs|K3rk#p>eihQc2+6uvc}@U24Og`n`?Lio3%C;vP2WL9A#yKO*V1Q%yOtfBRe2(3SnMtI$255-*^SBg;i@qpPM7iPDB**n4P&J@(X zLjeav^*R*5)&!cFIsDKr6T*-F!lSOpvP?xR@fF>>Q;kP#mA*3#=U%;&2=Y$BBPU;- zAyc(Owa%xFujO4SV|WIK{bK$S-Lg9+HsPMs>odY61SlbBf(mM@b~gt-O;N&$Sofse z4cT_0HO?s3DeB$gHNdChHMW@pnuVD#v{T#}is|pL(wKL2Q3^>eMfcrlu{$l+5!KB2 zs>rf*O#^Z9ZcA=3&DX_A62{ZiNMwiIZBx*P?uw;;L0pe`aEMi~j%@)R^`UDV_MtA1 z)25OB-CPv#gDqaP#1ZfG@_TIL%B>96IB>s9$hKsmwXO6XaxM>QFvmaLZ(}+JnrOPe zXC52z`0ITx^;TYLqpHsC69Vr=)SDfHEC{~L2Mz=$+I!M|VelRpbI_6V-iBF!QnxM- zeoD741m34x6AiL*_UOq)0@K+~S0ds4B+4~@`#>ZcYE$e3p|&iMEfy-2qzJX?ma2lF z?Fvl60lEHEIv^Zk7+jT@7X}j)?-iK^r%&-dBe6hl?{|9JBYJBUAMmH2cDVu4WKu3G z-jhmlTnsV(WQyqcDMW`@HKLloHsy0MeRt=H4Kll=ia96D#osJ&{y)f%pTY3ku7#QYRWKUp11jezz+_j@nb#T()67bt^_~Y^NYjv zjCsyDP~`YsZ9DWOzq3rcS+n{V-)WuFmjM;&gi`(36ShwI$i83(C)%nL4*Wf?gM15g zb6+TgI3)p-GGo1vL8%Bf4<16x(cEj{sbsHYB;k9RCIL93(=z6w4UGCrO z6j@Kb>(5#hWgk`jyE?xipV3OCSEv&tr^nga73>sP77S2{_g|+9GCxI8Vm$)Y71ZCh zXnwgSZ9705zRtls20c$8su^wsp^uXHI`cSz}IjO-mer24>p`c0&5uLdTv^&I@9bi-^fikQ`#* z!kr%mG^Ce@fcG|?0J+$iKxxIuXddxdK(8jriD zF1SzHm*2YZLzmFRq4B@PYStJeFnkXZQ$_Wf>ZtDf9Y0WLy`adiYV0!m zuC3kQf&~f2&vw0=0@JrCuSi>kA5`M~I1u7kPr@eihHZu_GOI68sr+gJ0h&Vl6v zvIl55CvNU$%VAVZ995QHHccZXGCa1x+0uJ5p_K9X_0r61wQ9vRj+q* z39qmJuj`i(12p~soVyTIe6jjwZAt73L_w2pH*CHgh|~u=)mFV3tkw`~18GO(=C?YG z27J^ywQ^RO`ly)2`vjCn6XuXV&v(S8>i?ti(0TM<^p0Y7rkbH^gs)}~t5uzP#O5ZHF{}RJcyc!LMk1Hyghk8dMAG$oSVLZFKb=^GqMi z2ZjZ+!`d%p<0li%<&W){Ixm@;no6g#shsOnOMj-?_SgRmO%0Dsjp}}E+)Hp?2RyW_ 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

P1d)Uq0Ux%&mG$fKZJI! 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